2014-09-06 62 views
0

我有它運行該SQL查詢laravel應用:SQL - 您的SQL語法有錯誤嗎?

SELECT * 
FROM `restaurants` 
WHERE ABS(-122.1430195 - long) < 0.217125 
    AND ABS(37.4418834 - lat) < 0.26937 
    AND FIND_IN_SET(egg, allergies) > 0; 
) 

我得到這個errror:

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 

我有更復雜的SQL相對較新,我一直在網上找,我可以不知道。任何幫助是極大的讚賞。謝謝!

+2

你並不需要最後的括號。 – 2014-09-06 06:38:08

回答

1

將單引號放在'egg'中,並避免字段名稱爲「long」,因爲它是MySQL的關鍵字。

例子:

SELECT * FROM `restaurants` WHERE ABS(-122.1430195 - longitude) < 0.217125 AND ABS(37.4418834 - lat) < 0.26937 AND FIND_IN_SET('egg', allergies) > 0 
+0

非常感謝,並且沒有很多關於MySQL集合的簡單文檔。 – user3934360 2014-09-06 08:29:40

4

您還在使用long這是保留字。像這樣改變你的查詢。我假設eggallergies

SELECT * 
FROM `restaurants` 
WHERE ABS(-122.1430195 - `long`) < 0.217125 
    AND ABS(37.4418834 - `lat`) < 0.26937 
    AND FIND_IN_SET(egg, allergies);  
+0

這也非常有幫助! – user3934360 2014-09-06 19:51:02

0

首先,你必須額外);後, 下次使用左右字符串引號FIND_IN_SET功能像FIND_IN_SET('egg', 'allergies'),如果他們不表列

使用此

SELECT * 
FROM `restaurants` 
WHERE ABS(-122.1430195 - long) < 0.217125 
    AND ABS(37.4418834 - lat) < 0.26937 
    AND FIND_IN_SET('egg', 'allergies') > 0; 

如果egg and allergies是表列,則不要使用quotes

SELECT * 
FROM `restaurants` 
WHERE ABS(-122.1430195 - long) < 0.217125 
    AND ABS(37.4418834 - lat) < 0.26937 
    AND FIND_IN_SET(egg, allergies) > 0; 
相關問題