2014-03-13 31 views
-1

我從MySQL得到這個錯誤在MySQL的語法錯誤:我的腳本

#1064 - 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) *pi()/180/2), 2)))as distance FROM wp_places_locator dest having dista' at line 1 
使用此查詢時

set @orig_lat=121.9763; set @orig_lon=37.40445; 
set @dist=10; 
SELECT *,3956 * 2 * ASIN(SQRT(POWER(SIN((@orig_lat -abs(lat)) * pi()/180/2),2) + COS(@orig_lat * pi()/180) * COS(abs(lat) *pi()/180) * POWER(SIN((@orig_lon - long) *pi()/180/2), 2)))as distance 
FROM wp_places_locator dest having distance < @dist 
ORDER BY distance limit 10\G; 

代碼就是從這裏適應:http://arubin.org/files/geo_search.pdf來搜索我的數據庫進行地理定位座標接近座標,它將按照與接收座標的距離順序接收和排序它們。 任何幫助將非常感激。

+0

因此,在交互式SQL shell中運行它。慢慢分解查詢,直到找到失敗的部分,然後修復它並重建查詢。 (FWIW:'\ G'看起來明顯是錯誤的* *語句*的一部分,它用於輸出格式並且在從腳本中使用時可能不起作用。) – user2864740

+0

您能推薦一個交互式SQL shell嗎? – james0

+0

['mysqli'命令行工具](http://dev.mysql.com/doc/refman/5.7/en/mysql.html)(交互式),phpMyAdmin(不是真正的交互式),甚至是http:///sqlfiddle.com/(用於快速測試)。可能有許多其他客戶端。 – user2864740

回答

1

單詞long是保留字。您可以找到單詞here的列表。

這意味着您需要避開該名稱,通常使用反引號。

更好的是,不要使用保留字作爲標識符。

+0

非常感謝。 – james0