DESC

내가 보려고 쓰는 블로그

«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
-
Yesterday
-
Total
-
  • 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 조건으로 지정하는 것이 좋다.

     

     

     

    반응형

    댓글

Customed By Hailey Gong.