计数查询中MySQL中的距离计算

时间:2016-06-28 08:54:57

标签: mysql

我有一个用户表,其中包含用户的纬度和经度信息。我根据距特定纬度的距离查询用户。为了加快速度,我可以使用SELECT语句中的距离表达式,并使用Having过滤结果,如:

SELECT id, 
    (6378.388 * acos(sin(:latitude) * sin(latitude) + 
     cos(:latitude) * cos(latitude) * cos(longitude - :longitude))) as distance
FROM User
Having distance < 60

问题是对结果进行分页,我需要在重复查询中对用户ID使用Count函数。如何使用距离表达式来过滤确切的结果数?

1 个答案:

答案 0 :(得分:0)

您可以使用子查询来执行此操作:

select count(id) usrcount from 
(SELECT id, 
(6378.388 * acos(sin(:latitude) * sin(latitude) + 
 cos(:latitude) * cos(latitude) * cos(longitude - :longitude))) as distance
 FROM User) subq
Where distance<60