Removing duplicate rows from table in Oracle

前端 未结 22 1900
醉话见心
醉话见心 2020-11-22 12:57

I\'m testing something in Oracle and populated a table with some sample data, but in the process I accidentally loaded duplicate records, so now I can\'t create a primary ke

22条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-22 13:32

    Solution 1)

    delete from emp
    where rowid not in
    (select max(rowid) from emp group by empno);
    

    Solution 2)

    delete from emp where rowid in
                   (
                     select rid from
                      (
                        select rowid rid,
                          row_number() over(partition by empno order by empno) rn
                          from emp
                      )
                    where rn > 1
                   );
    

    Solution 3)

    delete from emp e1
             where rowid not in
              (select max(rowid) from emp e2
               where e1.empno = e2.empno ); 
    

提交回复
热议问题