首页 文章

如何删除Postgresql中的重复行?

提问于
浏览
1

我有一个名为“phone_number_list”的表,它有id,phone_number,org_id,created_at . 我正在尝试运行一个查询,该查询将删除表中每个org_id的重复phone_number . 谁能帮我这个?我知道如何使用MySQL,但第一次使用Postgresql .

2 回答

  • 0

    这是使用窗口函数的解决方案:

    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);
    
  • 0

    试试这个:

    delete from your_table where id in 
       (select max(id) from your_table
         group by org_id, phone_number
         having count(1) > 1);
    

    Here's a working sample at DB-Fiddle . 它运作正常 .

相关问题