- 轉:https://blog.csdn.net/qq_27238185/article/details/80339653
- 經常會有這樣的需求,已知用戶具體的經緯度,要查詢出距離用戶最近 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這個是地球的直徑,單位千米. 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