我正在使用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,他们通常是相同的执行。 –