我正在使用 PostgresSQL。我的 GPS 点表结构如下:
如您所见,id = 551071
、551073
和 551075
的点具有相同的坐标。我想把它们全部删除,那3分。但问题是我有一个包含 600K 个对象的数据集,我想删除所有用户的所有此类重复坐标。这意味着我想从用户 10
中删除这三个点。如果用户11
也有相同的坐标,则无需删除。我怎样才能做到这一点?
最佳答案
您可以使用应用于聚合子查询的 exists
运算符:
DELETE FROM my_table a
WHERE EXISTS (SELECT b.lon, b.lat, b.user_id
FROM my_table b
WHERE a.lon = b.lon AND
a.lat = b.lat AND
a.user_id = b.user_id
GROUP BY b.lon, b.lat, b.user_id
HAVING COUNT(*) > 1)
关于SQL查找并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155126/