Post

[SQL] MERGE

[SQL] MERGE

MERGE


MERGE 문을 사용하면 새로운 행을 입력하거나, 기존 행을 수정하는 작업을 한번에 할 수 있다.

사용법

1
2
3
4
5
6
7
8
9
10
11
 MERGE
  INTO 타겟 테이블명
 USING 소스 테이블명
    ON (조인 조건식)
  WHEN MATCHED THEN
UPDATE 
   SET 수정할 컬럼명1 = 수정될 새로운 1
   [ , 수정할 컬럼명2 = 수정될 새로운 2, ...]
  WHEN NOT MATCHED THEN
INSERT [(컬럼1, 컬럼2, ...)]
VALUES (1, 2, ...);

위 구문은 MERGE 문장의 기본 형태다. MERGE 다음에 입력 및 수정되야 할 타겟 테이블명을 입력하고, USING 절에 입력 및 수정에 사용할 소스 테이블을 입력한다. ON 절에는 타깃 테이블과 소스 테이블 간의 조인 조건식을 기술해, 입력 또는 수정할 대상을 결정한다. ON 절의 조인 조건에 따라 조인에 성공한 행들에 대해서는 WHEN MATCHED THEN 아래 UPDATE 구문을 수행하고, 조인에 실패한 행들에 대해서는 WHEN NOT MATCHED THEN 아래 INSERT 구문을 수행한다.

예제

예제에 사용되는 릴레이션은 아래와 같다.

EMP 릴레이션

EMP 릴레이션

EMP_TMP 릴레이션

EMP_TMP 릴레이션
  • 쿼리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 MERGE 
  INTO EMP_TMP A
 USING EMP B
    ON (A.EMPNO = B.EMPNO)
  WHEN MATCHED THEN
UPDATE
   SET A.SAL = B.SAL
  WHEN NOT MATCHED THEN
INSERT (
        A.EMPNO
        , A.JOB
        , A.SAL
       ) VALUES (
        B.EMPNO
        , B.JOB
        , B.SAL
       );
  • 결과

MERGE 예제


읽어주셔서 감사합니다. 😊

Reference
SQL 전문가 가이드 - Kdata 한국데이터산업진흥원

This post is licensed under CC BY 4.0 by the author.