嘿,有没有办法按照距离的顺序得到最近10个目的地的列表,我的MySQL数据库具有用户和地点的经纬度。我不想指定用户和地点之间的距离,即没有最大或最小距离,只是我需要的最近的10。用户和地点共享同一个表。
答案 0 :(得分:2)
您可以使用Haversine公式:
SELECT t.*, (6371 * ACOS(COS(RADIANS(lat_user)) * COS(RADIANS(lat)) *
COS(RADIANS(lng) - RADIANS(lng_user) ) + SIN( RADIANS(lat_user)) *
SIN(RADIANS(lat)))) AS distance -- distance in kilometers
FROM yourTable
ORDER BY distance ASC
LIMIT 10
在上面的查询中,我假设lat_user
和lng_user
是用户的纬度和经度。 lat
和lng
是给定地点(记录)的纬度和经度。
阅读this SO question了解详情。