簡體   English   中英

MySQL查詢錯誤1064

[英]Mysql query error 1064

我嘗試使用有關通過此查詢查找用戶的查詢:

                Select id, username, lat, long,
                    acos(sin(0.761312289853)*sin(radians(lat)) + cos(0.761312289853)*cos(radians(lat))*cos(radians(long)-0.0676354285243)) * 6371 As D
                From (
                    Select id, username, lat, long,
                    From rcp_users
                    Where lat Between 43.4491099949 And 43.7908522051
                      And long Between 3.63919239657 And 4.11125680343
                ) As FirstCut
                Where acos(sin(0.761312289853)*sin(radians(lat)) + cos(0.761312289853)*cos(radians(lat))*cos(radians(long)-0.0676354285243)) * 6371 < 30
                Order by D

但是我有這個錯誤:

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long,
                    acos(sin(0.761312289853)*sin(radians(lat)) + cos(0.761312289853)*' at line 1

我不明白錯誤。

long保留關鍵字 如果要命名列標識符,則必須將其包裝在刻度中:

Select id, username, lat, `long`,
    acos(sin(0.761312289853)*sin(radians(lat)) + cos(0.761312289853)*cos(radians(lat))*cos(radians(`long`)-0.0676354285243)) * 6371 As D
From (
    Select id, username, lat, `long`,
    From rcp_users
    Where lat Between 43.4491099949 And 43.7908522051
      And `long` Between 3.63919239657 And 4.11125680343
) As FirstCut
Where acos(sin(0.761312289853)*sin(radians(lat)) + cos(0.761312289853)*cos(radians(lat))*cos(radians(`long`)-0.0676354285243)) * 6371 < 19
Order by D

long是一個保留關鍵字 ,不允許使用iut,因為它在mysql中具有另一種含義。

您可以通過使用反引號來使用它(例如php中的單引號會使內容亂七八糟):

SELECT id, username, lat, `long` FROM table

為了使它更加明顯,假設您在數據庫中有一列名為select的列:

SELECT id,username,select FROM table // this will not work, select is reserved

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM