我在 PostgreSQL 8.3.8 数据库中有一个表,它上面没有键/约束,并且有多行具有完全相同的值。
我想删除所有重复项,每行只保留 1 个副本。
特别是一列(名为“键”)可用于识别重复项,即每个不同的“键”应该只存在一个条目。
我该怎么做? (理想情况下,使用单个 SQL 命令。)
在这种情况下速度不是问题(只有几行)。
最佳答案
更快的解决方案是
DELETE FROM dups a USING (
SELECT MIN(ctid) as ctid, key
FROM dups
GROUP BY key HAVING COUNT(*) > 1
) b
WHERE a.key = b.key
AND a.ctid <> b.ctid
关于sql - 从小表中删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6583916/