mysql 坐标查询计算距离

-- 6378.138这个是地球的直径,单位公里.latitude是用户位置的纬度,longitude是用户位置经度.latitude 为商户的纬度字段,
-- longitude为商户的经度字段。上面一段sql计算得出根据用户经纬度计算与商户的距离。
-- 30.5821398542,
 
SELECT
    ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( 传入维度 * PI() / 180 - s.lat * PI() / 180 ) / 2 ), 2 ) + COS(传入维度 * PI() / 180) * COS(s.lat * PI() / 180) * POW( SIN( ( 传入经度 * PI() / 180 - s.lon * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance, id, `name` FROM shop s HAVING distance <= 5000
ORDER BY distance ASC