본문 바로가기
IT/DB

[ORACLE] MERGE문 사용법

by 스터딩아재 2021. 9. 28.
반응형

 

* 머지도 진짜 안 쓰고 싶은데, 필요할 때가 있다.

* MERGE문의 다양한 형태를 알아보자.

 

 

1. MERGE문 기본 형태

MERGE
INTO   테이블 or 뷰
USING  테이블 or 뷰 or 서브쿼리 or DUAL
ON     join조건 or MATCH조건

-- TABLE명 제외(INTO 테이블 적용)
-- ON에서 쓴 조건은 UPDATE 불가
WHEN MATCHED THEN 
    일치 SQL  
WHEN NOT MATCHED THEN
    불일치 SQL

 

 

2. MERGE문 단일 테이블 ( DUAL )

MERGE
INTO  TABLE_A A
USING DUAL -- 위 테이블과 같은 테이블 사용
ON    ( COL1 = '2021' )
WHEN MATCHED THEN
    UPDATE -- 테이블명 넣지 않음.
    SET A.COL2 = '올해'
WHEN NOT MATCHED THEN
    INSERT (A.COL1, A.COL2) -- 테이블명 넣지 않음
    VALUES ('2021', '신년')
;

 

 

3. MERGE문 JOIN 사용

MERGE
INTO  TABLE_A A
USING TABLE_B B 
    , (SELECT COL1 FROM TABLE_C) C
ON    (     A.COL1 = B.COL1 -- join조건
        AND A.COL1 = C.COL1 -- join 조건
        AND A.COL1 = '2021' -- match 조건
      )
WHEN MATCHED THEN
    UPDATE -- 테이블명 넣지 않음.
    SET A.COL2 = '올해'
WHEN NOT MATCHED THEN
    INSERT (A.COL1, A.COL2) -- 테이블명 넣지 않음
    VALUES ('2021', '신년')
;

 

 

* 10g 부터는 DELETE문과 WHERE절(INSERT 제외) 사용도 가능해졌다.

 

 

 

그리드형

댓글