SELECT
name,
( 6371 * acos( cos( radians(' 待计算点的纬度') ) * cos( radians( db_table.lat ) )
* cos( radians(db_table.lng) - radians(' 待计算点的经度')) + sin(radians(' 待计算点的纬度'))
* sin( radians(db_table.lat)))) AS distance
FROM ‘db_table'
WHERE
HAVING distance < 10
ORDER BY distance;
该方式计算得到的距离结果单位为 KM ,高德地图坐标系下测试经纬度计算与高德经纬度API计算的误差在米的范围内。 计算距离单位为米的的方式 好像不太准确(使用的高德经纬度测试)。
另一种方式,MySQL 5.7以上
Select st_distance_sphere(POINT(longitude1, latitude1), POINT(longitude2, latitude2)) as distcance
单位 米,KM
需要除以1000