用一句 Mysql 语句,根据经纬度,计算5公里范围内的数据

下面给出一条SQL语句来解决这个问题

ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(($longitude*PI()/180-longitude*PI()/180)/2),2)))*1000)

说明:6378.138这个是地球的直径,单位千米. l a t i t u d e longitude是用户位置经度.latitude 为商户的纬度字段,longitude为商户的经度字段。上面一段sql计算得出根据用户经纬度计算与商户的距离。

  • 完整查询语句如下
select ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(($longitude*PI()/180-longitude*PI()/180)/2),2)))*1000) AS distance FROM shop having distance <= 5000 order by distance asc

猜你喜欢

转载自blog.csdn.net/qq_20516587/article/details/80590525
今日推荐