티스토리 뷰
##ROWID를 사용하여 중복된 데이터를 제거 할 수 있다.
#첫번째.
DELETE FROM 테이블명
WHERE ROWID IN (
SELECT ROWID FROM (
SELECT * FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명) AS num
FROM 테이블명
)
WHERE num > 1 (-> num의 값이 1초과인 데이터들만 삭제)
)
);
#두번째. (중복된 데이터들 중에서 나중에 등록된 데이터 제거)
DELETE FROM 테이블명 별칭a
WHERE ROWID > (SELECT MIN(ROWID) FROM 테이블명 별청b
WHERE b.컬럼명 = a.컬럼명);
#세번째. (중복된 데이터들 중에서 나중에 등록된 데이터를 살리고 나머지를 제거)
DELETE FROM 테이블명 별칭a
WHERE ROWID < (SELECT MAX(ROWID) FROM 테이블명 별칭b
WHERE a.컬럼명 = b.컬럼명);
단, 세번째 방법의 경우 나중에 생성된 데이터의 ROWID가 작을 수도 있기 때문에 나중에 들어온 데이터를 살리는 경우는 맞지 않을 수 있다.
'DATABASE' 카테고리의 다른 글
[Oracle] 오라클 달력출력 (0) | 2016.09.30 |
---|---|
[Oracle] 테이블스페이스 관리 명령어 (0) | 2013.12.02 |
[Oracle] 유저삭제 (0) | 2013.12.02 |
[Oracle] 계정관련 명령어 (0) | 2013.12.02 |
[Oracle] 해당 테이블 사용량 (0) | 2013.11.29 |