1

我正在尝试执行此查询:

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

但是,当我执行上述查询时,它不会返回任何行。这里有什么问题?

4

1 回答 1

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您就可以开始调查原因。

于 2013-02-01T01:20:07.313 回答