【发布时间】:2011-09-13 17:43:55
【问题描述】:
假设我有一个表venues,其中包含以下列:
id
user_id
name
latitude
longitude
纬度和经度保存为 FLOAT(10,6) 值。随着不同用户添加场地,场地重复。如何从表中选择范围内的所有重复项,最多可以说 50 米(因为在不同纬度,经度米当量不同,因此这绝对是近似值,因此可能很难实现)?查询应该选择所有场所:VenueA 和 VenueB(可能有 VenueC、VenueD 等),以便我可以比较它们。它应该过滤掉范围内每个位置实际上只有一个的场所(我只关心重复)。
【问题讨论】:
-
你能澄清你的问题吗?在添加新场所时检测重复比在添加新场所时检测重复要有效得多,因为唯一实用的方法是检查每个场所与所有其他未检查场所。添加场地时不检查场地的原因是什么?在这种情况下,之前建议的方法是有效的,尽管通过使用半正弦公式可以获得最佳结果,该公式可以合并到一个查询中,该查询也对纬度范围进行简单检查。后者可以使用索引,而 hasrsine 不能轻易这样做。
标签: mysql sql gps latitude-longitude