MySQL根据经纬度计算距离语句
-- 根据当前经纬度,算出附近的商家距离 108.280102,22.867369,可以创建一个存储过程来计算
explain
SELECT
abs(t.positionLat - 22.867369) as diffLag,
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
22.867369 * PI() / 180 - positionLat * PI() / 180
) / 2
),
2
) + COS(22.867369 * PI() / 180) * COS(positionLat * PI() / 180) * POW(
SIN(
(
108.280102 * PI() / 180 - positionLng * PI() / 180
) / 2
),
2
)
)
) * 1000
) AS juli
, t.*
FROM
t_restaurant t
-- 先缩小范围,再计算距离,不过用大小比较会索引失效,有空再研究
where
t.positionLng > 108.280102 - 0.059827
and t.positionLng < 108