Oracle
오라클 rowid 활용
스마트큐브
2016. 7. 6. 11:54
중복 데이터가 존재하고 해당 중복 데이터 끼리 순번을 업데이트하고 싶은경우
ex) 이렇게 같은 계약번호 끼리는 순번을 1번부터 다시 매기고 싶은경우
계약번호 |
순번 |
A000 |
1 |
A000 |
2 |
UPDATE 테이블 TB SET 순번컬럼 = (SELECT rn FROM (SELECT ROWID rid , ROW_NUMBER() OVER(PARTITION BY 특정컬럼 ORDER BY 정렬기준) rn FROM 테이블 ) WHERE rid = TB.ROWID );
중복 데이터 삭제
-- 중복데이터 제거 : 아래의 PARTITION BY에 들어가는 것은 PK -- 중복데이터 가운데 ORDER BY 에 의한 최초의 것을 제외한 나머지 삭제 DELETE FROM 테이블명 WHERE ROWID IN (SELECT ROWID FROM (SELECT ROWID ,ROW_NUMBER() OVER (PARTITION BY 중복체크컬럼 ORDER BY 정렬필드명 DESC ) NO FROM 테이블명 )WHERE NO != 1 ) ;