我正在尝试执行此查询:
SELECT `venues` . *
FROM `venues`
WHERE `lat` >= 39.847991180331
AND `lng` >= -86.332592054637
AND `lat` <= 40.137846252794
AND `lng` <= -85.954901904578
LIMIT 0 , 30
这是lat和lng字段的表结构和一个示例行,它应该至少返回1行
lng decimal(65,15)
lat decimal(65,15)
Name Lng Lat
Ambre Blends Studio -86.143746979607530 39.875314973898870
然而,当我执行上述查询时,它不返回任何行。这有什么问题?
答案 0 :(得分:0)
我总是对浮点平等和不平等操作保持谨慎,MySQL过去曾经有过这类问题的历史(我不确定你使用的是哪个版本但是在503/505左右有一些变化。
我要做的第一件事是调试实际的声明。从:
开始select venues.* from venues
where name like 'Ambre%'
并确保您只获得一行(如果有许多以where
开头的行,您可能需要调整Ambre
子句。
然后一次添加其他子条款,直到该行不显示为止。第一个是:
select venues.* from venues
where name like 'Ambre%'
and lat >= 39.847991180331
一旦你确定哪个条件导致select
失败,你就可以开始研究原因。