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
         )
;