## 使用MySQL計算一個坐標點和數據庫中門店的距離,并按距離排序
參考文檔:[https://www.cnblogs.com/hanshuai0921/p/6992447.html](https://www.cnblogs.com/hanshuai0921/p/6992447.html)
### 公式一
```
SELECT *, ROUND((ACOS(SIN((22.574136 * PI()) / 180 ) *SIN((latitude * PI()) / 180 ) +COS((22.574136 * PI()) / 180 ) * COS((latitude * PI()) / 180 ) *COS((114.134837 * PI()) / 180 - (longitude * PI()) / 180 ) ) * 6380 * 1000)) AS distance FROM shops WHERE
latitude > 22.574136-1 AND
latitude < 22.574136+1 AND
longitude > 114.134837-1 AND
longitude < 114.134837+1
ORDER BY distance ASC LIMIT 10
```
### 公式二
```
SELECT *, ROUND((6380 * 2 * 1000 * ASIN(SQRT(POW(SIN((22.574136 * PI() / 180 - latitude * PI() / 180) / 2),2) + COS(22.574136 * PI() / 180) * COS(latitude * PI() / 180) * POW(SIN((114.134837 * PI() / 180 - longitude * PI() / 180) / 2),2))))) AS distance FROM shops WHERE
latitude > 22.574136-1 AND
latitude < 22.574136+1 AND
longitude > 114.134837-1 AND
longitude < 114.134837+1
ORDER BY distance ASC LIMIT 10
```