Mysql實現根據經緯度查詢周圍的商家,並按距離進行排序
阿新 • • 發佈:2019-01-10
今天要說的是如何在Mysql中實現根據已知的經緯度查詢周圍的商家(或者是別的帶有經緯度欄位的表)並且根據距離的遠近來進行排序!
廢話就不多說了,直奔主題~
首先有這麼個商城表
lng代表經度,lat代表緯度!其他的不重要
然後用下面的SQL語句進行查詢即可!
假設當前 經度為:118.356734
緯度為:21.785367
則SQL語句如下
SELECT *,( 6371 * acos ( cos ( radians(21.785367) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(118.356734) ) + sin ( radians(21.785367) ) * sin( radians( lat ) ) ) ) AS distance //距離 FROM t_shop HAVING distance < 2 //篩選距離小於2km的商家(可不寫),如果沒查到資料就是沒有小於2km的商家 ORDER BY distance //根據距離遠近來排序 預設升序 (可不寫) LIMIT 0 , 20; //顯示前20條資料(可不寫)
在資料庫中查詢的結果如下