SQL 查找并删除重复项
SQL find and delete repeated items
我正在使用 PostgresSQL。我的 gps 点结构如下 table:
如您所见,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)
我正在使用 PostgresSQL。我的 gps 点结构如下 table:
如您所见,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)