티스토리 뷰

##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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함