【发布时间】:2016-12-06 18:35:34
【问题描述】:
我在 mysql 表中使用 2 个纬度和 2 个经度因为某些记录有多个位置,所以我要加入纬度和经度记录。但是在使用 UNION 加入记录时,会创建一些较早的重复记录。那么,如何避免重复记录。谁能帮帮我。
如何创建重复记录。 例如,一条记录有 2 个地点之间的距离为 500 公里,但是当我们使用 HAVING 距离超过 500 公里时。纬度将拉一次记录,而 tatitude1 将拉一次记录。所以我们可以得到两条记录。所以,这就是问题所在。
SELECT * , (6371 * acos(cos(radians($Latitude)) * cos(radians(latitude)) * cos(radians(longitude) - radians($Longitude)) + sin(radians($Latitude)) * sin(radians(latitude)))) AS distance
FROM mytable
HAVING distance < $Distance
UNION DISTINCT
SELECT * , (6371 * acos(cos(radians($Latitude)) * cos(radians(latitude1)) * cos(radians(longitude1) - radians($Longitude)) + sin(radians($Latitude)) * sin(radians(latitude1)))) AS distance
FROM mytable
HAVING distance < $Distance
ORDER BY distance
【问题讨论】:
-
UNION 默认为 DISTINCT。你能提供样本数据吗?你确定你得到重复的行吗?
-
你是
UNION同桌,这有什么意义? -
是的,这是由纬度来的,然后同样的记录又来纬度1
-
HAVING distance没有GROUP BY? -
向我们展示重复记录的样子?也许是带有特殊/不可见字符的字符串。因为正如 Dekel 所说 UNION 默认删除重复项,
UNION ALL保留重复项
标签: php mysql latitude-longitude