SQL - 您的SQL语法有错误吗?

时间:2014-09-06 06:36:53

标签: php mysql sql laravel

我有一个运行此SQL查询的laravel应用程序:

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

我得到这个错误:

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,我一直在网上看,我无法弄明白。任何帮助是极大的赞赏。谢谢!

3 个答案:

答案 0 :(得分: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);    

答案 1 :(得分:2)

将单引号放入'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

答案 2 :(得分: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;