我正在使用MySQL 5.5.52。縮寫:Lat =緯度,Long =經度,NE =東北,SW =西南。經緯度長度在經緯度範圍內
我有兩個SQL表格:
第一個表格包含「區域」。每個區域由ID,NE Lat,NE Long,SW Lat,SW Long組成。
第二個表格包含「點」。每個點由ID,Lat,Long組成。
我需要給定區域ID列表將在這些地區返回點的SQL語句。如果一個點的Lat-Long位於由區域的NE Lat-Long和SW Lat-Long定義的右上角和左下角的平方內,則該點定義在Area中。
注意:我可以將區域更改爲具有半徑的單個經緯度長度,其中點位於「圓圈」內。但理想情況下,我不想這樣做,除非有更高效的SQL語句來解決這個問題。
所以像這樣:'WHERE(Points.Lat> Areas.SWLat AND Points.LAT Areas.SWLong AND Points.Long
簡而言之,我從未在數據庫中存儲空間數據,也不知道最佳方式。 RKRC的答案似乎爲我做了這份工作。按照你的方式(在where子句而不是聯接中)有沒有優勢? – AndyW
對於所有意圖和目的,它們(通常)都是相同的東西。 '之間'是包含性的,所以它是<= and > =。至於加入ON與WHERE,他們通常是相同的執行。 –