如何删除 Postgresql 中的重复行?
How to remove duplicated rows in Postgresql?
我有一个名为 "phone_number_list" 的 table,它的 ID 为 phone_number、org_id、created_at。我正在尝试 运行 一个查询,该查询将为 table 中的每个 org_id 删除重复的 phone_number。谁能帮我这个?我知道如何使用 MySQL 执行此操作,但第一次使用 Postgresql。
试试这个:
delete from your_table where id in
(select max(id) from your_table
group by org_id, phone_number
having count(1) > 1);
这是一个使用 Window 函数的解决方案:
DELETE FROM phone_number_list
WHERE id IN
(SELECT id FROM
( SELECT id, ROW_NUMBER() OVER
(partition BY phone_number, org_id ORDER BY id ASC) AS rnum
FROM phone_number_list
) AS t WHERE t.rnum > 1);
我有一个名为 "phone_number_list" 的 table,它的 ID 为 phone_number、org_id、created_at。我正在尝试 运行 一个查询,该查询将为 table 中的每个 org_id 删除重复的 phone_number。谁能帮我这个?我知道如何使用 MySQL 执行此操作,但第一次使用 Postgresql。
试试这个:
delete from your_table where id in
(select max(id) from your_table
group by org_id, phone_number
having count(1) > 1);
这是一个使用 Window 函数的解决方案:
DELETE FROM phone_number_list
WHERE id IN
(SELECT id FROM
( SELECT id, ROW_NUMBER() OVER
(partition BY phone_number, org_id ORDER BY id ASC) AS rnum
FROM phone_number_list
) AS t WHERE t.rnum > 1);