Mysql 之根据经纬度按距离排序

本文介绍了三种不同的地理距离计算方法:使用st_distance并转换为米、利用球面三角公式计算距离和使用st_distance_sphere进行距离计算。这些方法适用于数据库中地理坐标点之间的距离计算,能够帮助用户找到指定范围内的地点。

一、方式一

st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为米。
SELECT *,
(st_distance(point(lng,lat),point(116.3424590000,40.0497810000))*111195/1000 ) as juli FROM table ORDER BY juli ASC

二、方式二

select *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$lat}*PI()/180-lat*PI()/180)/2),2)+COS({$lat}*PI()/180)*COS(lat*PI()/180)*POW(SIN(({$lng}*PI()/180-lng*PI()/180)/2),2)))*1000) AS juli from table order by juli asc

三、方式三

附近30KM内站点,并按照距离由近及远排列
SELECT *,round(st_distance_sphere(point(lng,lat),point(116.382615,39.91024))/1000,2) as juli FROM a HAVING juli<30 ORDER BY juli ASC

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值