用一句 Mysql 語句,根據經緯度,計算5公里範圍內的資料
經常會有這樣的需求,已知使用者具體的經緯度,要查詢出距離使用者最近 X 公里內的商家
下面給出一條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這個是地球的直徑,單位千米.$latitude 是使用者位置的緯度,$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