# 특정 테이블에 중복된 레코드가 있어 하나만 남겨두고 그외 중복 레코드를 삭제해야 하는 경우


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;




+ Recent posts