SQL 4 Oracle 오라클용 sql 실무

SQL4Oracle

오라클 중복데이터 삭제하기 ROWID의 오해

돌프1 2023. 3. 3. 17:24

2011-07-31 01:30:23


SQL 4 Oracle 오라클용 sql 실무

▒ 오라클 중복데이터 삭제하기 ROWID의 오해

 

먼저 들어온 중복 데이터 삭제하기
DELETE FROM TABLE_NAME A
          WHERE ROWID < (SELECT MAX(ROWID) 
                                       FROM TABLE_NAME B
                                      WHERE A.COL = B.COL

위 SQL에서 오류사항 2가지

1. 오라클의 ROWID는 순차적으로 insert 된 DATA의 순서란 뜻이 아니다.

   말그대로 물리적인 ROWID에 DATA INSERT시 비어있는 ROW에 DATA가 들어간다

  그래서  ROWID로 단순 최초 최후의 판단조건으로 부적절 하다.

2. 중복 데이터란 unique 키가 없는 상태에서 키값이 중복이란 것이지 전체 데이터가 중복이란 뜻이 아닐경우

    최초 최후의 값을 판단하지 않으면 낭패를 볼 수도 있다.