我有一个用户表,其中包含用户的纬度和经度信息。我根据距特定纬度的距离查询用户。为了加快速度,我可以使用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
函数。如何使用距离表达式来过滤确切的结果数?
答案 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