我有一个表,其中有很多重复的行并且没有主键。
我只想删除重复的记录,但是当我尝试这样做时,它会删除所有对等记录。
我怎样才能找到ROWID
来自 Postgres 中的表?
在 PostgreSQL 上,行的物理位置称为 CTID。
因此,如果您想查看它,请使用如下查询:
SELECT CTID FROM table_name
要在 DELETE 语句上使用它来删除重复的记录,请像这样使用它:
DELETE FROM table_name WHERE CTID NOT IN (
SELECT RECID FROM
(SELECT MIN(CTID) AS RECID, other_columns
FROM table_name GROUP BY other_columns)
a);
请记住,table_name 是所需的表,other_columns 是您要用于过滤该表的列。
Ie:
DELETE FROM user_department WHERE CTID NOT IN (
SELECT RECID FROM
(SELECT MIN(CTID) AS RECID, ud.user_id, ud.department_id
FROM user_department ud GROUP BY ud.user_id, ud.department_id)
a);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)