以下查询根据地理坐标计算用户距离。它为1英里范围内的人返回4个结果。我如何计算结果并将其返回?
select ((ACOS(SIN(40.7643030* PI() / 180) *
SIN(users.lat * PI() / 180) +
COS(40.7643030* PI() / 180) *
COS(users.lat * PI() / 180) *
COS((-73.9730040- users.lon) * PI() / 180)) *
180 / PI()) * 60 * 1.1515)
AS `distance` FROM users HAVING distance < 1
我尝试在距离后添加'COUNT(*)AS count',但它没有返回任何结果。
感谢您的帮助。
答案 0 :(得分:1)
您可以使用子查询:
select count(*)
from (select ((ACOS(SIN(40.7643030* PI() / 180) *
SIN(users.lat * PI() / 180) +
COS(40.7643030* PI() / 180) *
COS(users.lat * PI() / 180) *
COS((-73.9730040- users.lon) * PI() / 180)) *
180 / PI()) * 60 * 1.1515)
AS `distance`
FROM users
HAVING distance < 1
) t;