空间查询未显示结果

时间:2012-12-13 13:49:36

标签: mysql sql spatial

我正在使用空间查询来查找给定lat的半径中的某些位置。而且很长。

select *, (3959 * ACOS(COS(radians(1.0)) * COS(radians(`lat`)) * COS(radians(`lng`) - radians(1.0)) + sin(radians(1.0)) * sin( radians(`lat`)))) AS distance
FROM table_name
HAVING distance <= 5
ORDER BY distance

这不会返回任何值。查询有问题吗?

TIA。

1 个答案:

答案 0 :(得分:0)

我怀疑问题是你没有GROUP BY条款。试试这个:

SELECT *
FROM (select *, (3959 * ACOS(COS(radians(1.0)) * COS(radians(`lat`)) * COS(radians(`lng`) - radians(1.0)) + sin(radians(1.0)) * sin( radians(`lat`)))) AS distance
      FROM table_name
     ) t
WHERE distance <= 5
ORDER BY distance

如果您使用的是MySQL,那么文档会明确警告不要使用HAVING(http://dev.mysql.com/doc/refman/5.0/en/select.html)。我认为查询不会在任何其他查询引擎中进行解析,所以我猜你使用的是MySQL(SQL标准要求DISTINCTGROUP BY子句中,如果它在HAVING条款)。