一尘不染

从小表中删除重复的行

sql

我在PostgreSQL 8.3.8数据库中有一个表,该表上没有键/约束,并且有多个行,它们的值完全相同。

我想删除所有重复项,并且每行仅保留1个副本。

特别是有一列(称为“密钥”)可用于标识重复项,即,每个不同的“密钥”应该只存在一个条目。

我怎样才能做到这一点?(理想情况下,使用单个SQL命令。)
在这种情况下,速度不是问题(只有几行)。


阅读 114

收藏
2021-05-05

共1个答案

一尘不染

DELETE FROM dupes a
WHERE a.ctid <> (SELECT min(b.ctid)
                 FROM   dupes b
                 WHERE  a.key = b.key);
2021-05-05