sql - 从小表中删除重复行

标签 sql postgresql

我在 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/

相关文章:

javascript - KendoGrid JavaScript 运行时错误 : Invalid template

java - 如何在jsp中显示数据库中最后创建的图像

sql - 从最后插入的行中选择 id

postgresql - 如何合并两个不同的查询

Django 测试数据库需要启用 Postgres 扩展

java - jOOQ - fetchAny 和 fetchOne 之间的区别

mysql - 统计最近 X 天内每天的多个状态

json - 在 PostgreSQL 中按值动态选择或过滤 JSON 字段

sql - Postgresql 枢轴?交叉表?

database - Postgres 中的 DELETE 查询无限期挂起