2014-09-06 72 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;