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 删除重复记录,并保留其中一条


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM