Oracle 중복 제거 데이터의 ROWID에 대한 오해

Oracle 중복 제거 데이터의 ROWID에 대한 오해

SQL4 오라클

2011-07-31 01:30:23


SQL 4 Oracle Oracle SQL 실습

▒ Oracle의 중복제거에서 ROWID에 대한 오해

먼저 발생하는 중복 데이터 제거
TABLE_NAME A에서 삭제
WHERE ROWID < (SELECT MAX(ROWID)
table_NAME B에서
여기서 A.COL = B.COL

위의 SQL에는 두 가지 오류가 있습니다.

1. Oracle의 ROWID는 데이터가 순차적으로 삽입되는 순서를 나타내지 않습니다.

즉, INSERT DATA가 물리적 ROWID에 들어가면 DATA는 빈 ROW에 들어갑니다.

따라서 ROWID는 단순한 최초이자 최후의 판단 조건으로 적합하지 않다.

2. 중복 데이터는 고유 키 없이 키 값이 반복되는 것을 의미하지만 전체 데이터가 반복되는 것은 아닙니다.

첫 번째 값과 마지막 값을 판단하지 않으면 실망할 수 있습니다.