我有一个运行此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,我一直在网上看,我无法弄明白。任何帮助是极大的赞赏。谢谢!
答案 0 :(得分:4)
您还使用long
这是保留字。像这样更改您的查询。我假设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);
答案 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;