保留单个副本:删除不相同的重复行
维护数据完整性通常涉及从数据库中删除冗余记录。但是,在某些情况下,可能需要保留每组重复行的一个副本。本文解决了在 PostgreSQL 中从一组重复项中删除除一行以外的所有行的挑战。
解决方案:使用唯一标识符进行选择性删除
解决方案中提供的查询利用分组的概念并选择每组重复项中唯一标识符字段的最小(或最大)值。通过从删除过程中排除具有该最小(或最大)标识符的行,可以保留每个唯一行的单个副本。
以下查询演示了这种方法:
DELETE FROM foo WHERE id NOT IN (SELECT min(id) FROM foo GROUP BY hash);
在在该查询中,散列字段表示定义重复集的唯一特征或特征组合。通过从每个组中选择最小 id 值,查询可以识别将保留的行,并从删除中排除剩余的重复行。
以上是如何在保留单个副本的同时删除 PostgreSQL 中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!