嘿,有沒有一種方法可以按距離順序得到最近10個目的地的列表,我的MySQL數據庫有用戶和地點的經度和緯度。我不想指定用戶和地點之間的距離,也就是沒有最大或最小距離,只是我需要的最接近的10個地方。用戶和地點都共享同一個表。距離他們的距離順序最近的10個目的地
回答
可以使用半正矢公式:
SELECT t.*, (6371 * ACOS(COS(RADIANS(lat_user)) * COS(RADIANS(lat)) *
COS(RADIANS(lng) - RADIANS(lng_user)) + SIN(RADIANS(lat_user)) *
SIN(RADIANS(lat)))) AS distance -- distance in kilometers
FROM yourTable
ORDER BY distance ASC
LIMIT 10
在上述查詢我假定lat_user
和lng_user
是用戶的緯度和經度。並且lat
和lng
是給定地點(記錄)的經度和緯度。
閱讀this SO question瞭解更多信息。
除了這將通過每一個單進入數據庫表....這將使它非常,非常慢... Haversine是一個昂貴的,緩慢的公式計算 –
我沒有通過拉特和長的地方,我必須從數據庫中獲取位置 –
@MarkBaker是的,對於擁有頻繁用戶或許多用戶的大型數據庫來說,這不會很好地擴展。但是對於數百或數千條記錄來說,它應該是可行的。長期來看,某種地理分區是更好的方式。 –
- 1. 最近距離(分離集)
- 2. 距離最近鄰居的平均距離的近似值?
- 3. 距離google地方最近的地方
- 4. 距離點和線最近的曼哈頓距離
- 5. Toast名稱和距離地圖中心最近的城市的距離
- 6. 圓分離距離 - 最近鄰問題
- 7. 按特定距離查找距離目標位置最近的位置
- 8. 找到距離地點最小總距離的點的算法
- 9. 到最近的迴文的距離
- 10. 距離Cell塔的距離
- 11. 按最近距離排序列表
- 12. 有限行之間的最近距離
- 13. 尋找最近的駕車距離
- 14. 查找最接近的漢明距離
- 15. 獲得距離點最近的座標
- 16. 尋找距離最近的號碼?
- 17. AS3距離今天最近的日期
- 18. 尋找距離最近的向量點
- 19. 查找距離MongoDB最近的偶數
- 20. 火花SQL距離最近的假期
- 21. 的最小距離
- 22. 轉換(起源,目的地,距離)到距離矩陣
- 23. SQL地理按距離排序的快速最近鄰居
- 24. 如何找到距離最近的非重疊元素的距離?
- 25. MariaDB距離公式最近的200個地方沒有半徑
- 26. 從距離閾值距離更近的雲中移除點
- 27. 最小距離
- 28. 距離(最短)
- 29. 如何使用geodjango返回距離點最近距離的記錄?
- 30. 遊客和最近的商店之間的測地距離
yes - 這是可能的 – RamRaider
有,但它很慢....你可以通過指定一個邊界框,並使用不斷增加的邊界框執行一系列查詢來提高效率,直到你有10個條目 –
我寫了10例如,實際上我至少需要100,所以它不是一個好主意我猜:( –