Oracle Database TIP
중복된 ROW 데이터 삭제 방법 18 4 99,999+

by 구루비 ROWID 중복 중복제거 중복데이터삭제 [2003.01.28]


  ROWID를 사용하여 중복된 ROW를 제거 할 수 있다.

-- 중복된 데이터중에서 ROWID가 큰 값(나중에 등록된 데이터) 제거
SQL> DELETE FROM emp a
     WHERE ROWID > (SELECT MIN(ROWID) 
                    FROM emp b
                    WHERE b.empno = a.empno);
 
 
-- 나중에 들어온 데이터를 살릴경우
SQL> DELETE FROM emp a
     WHERE ROWID < (SELECT MAX(ROWID) 
                    FROM emp b
                    WHERE a.empno = b.empno);

- 강좌 URL : http://www.gurubee.net/lecture/1640

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 김정식 [2006.03.15 23:22:04]
나중에 생성된 데이터의 ROWID가 작을 수도 있기 때문에 "방법2)" 의 나중에 들어온 데이터를 살릴경우는 맞지 않을 수도 있습니다.
ROWID를 조회하고서 삭제하는 방법이 가장 정확하겠죠..

by 사쿠라 [2007.01.07 16:31:01]
방법1일경우 테이블 사용권한 같은것도 그대로 복사가 되어집니까?

by 강민수 [2008.05.16 14:24:07]
중복된 값을 찾을 시 select 부분에 max(rowid), min(rowid) 넣어서 전 사용하고 있습니다.

by 하태민 [2008.09.17 13:21:55]
사용권환 인덱스는 다로...해야 될꺼에요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입