본문 바로가기

DATABASE

[ORACLE] PRIMARY KEY 나 Unique가 없이 중복된 데이터가 있을때 삭제하는 방법

PRIMARY KEY 나 Unique가 없이 중복된 데이터가 있을때 삭제하는 방법

Data는 중복되더라도 ROW ID는 Unique 하므로 이를 바탕으로
Analytic function 이나 self join 을 이용하여 삭제할 수 있음

1. Analytic Function
delete from dup where rowid in
( select rowid from
( select row_number() over (partition by empno order by sal ) rnum from dup )
where rnum>1)


2. Analytic Function 이 적용 안 될때
delete from dup a where rowid > (select min(rowid) from dup b where a.empno=b.empno)


-- 관련 table
create table dup(empno varchar2(4), sal number)

[바로가기 링크] : http://coolx.net/gate.jsp?url=cboard/read.jsp%3fdb=develop%26num=129