pgsql删除重复记录

Posted 轻云悠然舞月光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pgsql删除重复记录相关的知识,希望对你有一定的参考价值。

如下:

DELETE 
FROM
    categories a 
WHERE
    ( a.id, a.name, a.parent_id ) IN ( SELECT id, name, parent_id FROM categories GROUP BY id, name, parent_id HAVING count( * ) > 1 ) 
    AND ctid NOT IN ( SELECT min(ctid) FROM categories GROUP BY id, name, parent_id HAVING count( * ) > 1 )

关键点:oracle中有内部id为rowid, 在postgresql中有ctid.

参照:oracle rowid and postgresql ctid

参照:SQL 删除重复记录,并保留其中一条

以上是关于pgsql删除重复记录的主要内容,如果未能解决你的问题,请参考以下文章

Sphinx - 在代码块片段中使用省略号 (...)

使用 PL/pgSQL 在 PostgreSQL 中将多个字段作为记录返回

PL/pgSQL - 从 FUNCTION 返回单个记录

PHP使用id和pdo删除记录(初学者)[重复]

如何从没有ID的表中删除重复(重复)记录,行[重复]

oracle删除重复记录保留一条