1. 程式人生 > >Mysql實現根據經緯度查詢周圍的商家,並按距離進行排序

Mysql實現根據經緯度查詢周圍的商家,並按距離進行排序

今天要說的是如何在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條資料(可不寫)

在資料庫中查詢的結果如下

 

The end!!!