# 특정 테이블에 중복된 레코드가 있어 하나만 남겨두고 그외 중복 레코드를 삭제해야 하는 경우
1. 중복된 레코드중에 ROWID가 큰 값을 제거.
즉, 중복된 레코드 중에서 나중에 입력된 값을 삭제하고 최초로 입력된 레코드 하나만 남길 경우
DELETE FROM emp a WHERE rowid > (SELECT MIN(ROWID) FROM emp b WHERE b.empno = a.empno);
2. 중복된 레코드중에 ROWID 가 작은값을 제거.
즉, 중복된 레코드 중에서 먼저 입력된 값을 삭제하고 나중에 입력된 레코드 하나만 남길 경우
DELETE FROM emp a WHERE ROWID < (SELECT MAX(ROWID) FROM emp b WHERE a.empno = b.empno);
3. Distinct 를 이용하여 중복을 제거한 임시테이블을 생성하고 테이블 명칭 변경
CREATE TABLE emp2 AS SELECT distinct empno FROM emp; DROP TABLE emp; RENAME emp2 TO emp;
'::: DB ::: > Oracle' 카테고리의 다른 글
sys, system 계정의 패스워드를 분실한 경우 (0) | 2009.09.02 |
---|---|
[SQL] 컬럼 삭제 및 변경 (0) | 2009.09.01 |
WARNING: Subscription for node down event still pending (0) | 2009.05.27 |
Listener 패스워드 설정 (0) | 2009.05.16 |
listener.ora Trace Parameters (0) | 2009.05.16 |