我有一个laravel应用程序,它运行这个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;
)
我收到这个错误:
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还比较陌生,我一直在网上寻找,但我搞不清楚。非常感谢您的帮助。谢谢
您还使用了作为保留字的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);
将单引号放在'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
首先在;
之后有额外的)
,下一步在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;