-
ORACLE MERGE 중복 데이터 확인Database 2020. 4. 28. 10:36반응형
두 개 테이블의 데이터를 병합할 때 사용하는 MERGE INTO 문을 사용하기위해 주의할 점.
USING 안에는 중복되는 데이터가 없어야 한다. 조건을 꼼꼼하게 설정하고 DISTINCT 키워드등을 사용하여 데이터를 정제해야한다.
MERGE INTO TB_TARGET A USING( SELECT DISTINCT COL1, COL2, COL3 FROM TB_RESOURCE WHERE -- JOIN 조건 ) B ON( A.COL3 = B.COL3 ) WHEN MATCHED THEN UPDATE SET A.COL1 = B.COL1 , A.COL2 = B.COL2 , A.LAST_UPD = SYSDATE ;
필요한 조건을 지정하였는데도, 에러가 발생하는 경우 아래 쿼리를 활용하여 어떤 데이터가 중복되었는지 확인해보고 데이터 혹은 조건을 수정해야만 한다.
----------------------------------------------------------------------- -- 중복 데이터 확인 쿼리 ----------------------------------------------------------------------- SELECT -- JOIN 조건컬럼 , COUNT(*) FROM ( -- USING 조회쿼리 ) GROUP BY -- JOIN 조건컬럼 HAVING COUNT(*) >1 ;
MERGE INTO 의 ON 조건에 사용한 컬럼의 경우 UPDATE 문에서 수정을 할 수 없으므로 데이터 수정하기 전에 추가 조건이 필요한 경우 UPDATE 문의 WHERE 조건으로 지정하는 것이 좋다.
반응형'Database' 카테고리의 다른 글
[Oracle] SYS_CONTEXT 함수로 현재 세션 환경 조회 (0) 2022.12.15 [Oracle] 프로시저 실행 후 리턴 값 출력 (0) 2022.05.26 [Oracle] 프로시저로 정기 메일 발송하기 (0) 2020.06.02 [Oracle] 기본 CRUD 구문 (0) 2020.05.12