DataBase

MSSQL의 Merge 로 데이터 병합처리

따봉이 2020. 11. 4. 13:55
728x90
반응형

 

MERGE

단일 query에서 여러 DML(insert, update, delete) 작업
하나의 작업으로 모든 DML을 처리하여 성능 향상

MERGE 사용법

merge [변경테이블] as t1
	using [기준테이블] as t2
    on t1.key1 = t2.key2
    when matched then [일치시 실행할 쿼리문]
    when not matched then [불일치시 실행할 쿼리문]
matched : on 조건이 일치
not matched : on 조건이 불일치

 

MERGE 사용법2

merge [변경테이블] as t1
	using [기준테이블] as t2
    on t1.key1 = t2.key2
    when matched and [조건1] then [일치시 실행할 쿼리문]
    when not matched and [조건2] then [불일치시 실행할 쿼리문]
when 절에 조건을 추가하여 사용할 수 있다.

NOT MATCHED BY SOURCE

NOT MATCHED 일때 데이터를 DELETE, UPDATE 시 오류가 발생한다.
이때, NOT MATCHED BY SOURCE 를 사용하면 된다.

NOT MATCHED BY SOURCE

변경 테이블의 데이터를 삭제/수정를 위해서는 당연히 변경 테이블에 값이 있어야하며,
매치가 되지 않기에 기준테이블에는 해당 값이 없다.
DELETE, UPDATE 가능하다.

NOT MATCHED BY TARGET (= NOT MATCHED)

위 경우를 제외한 비매치의 경우 변경 테이블에 값이 없는 상태이다.
이 경우는 DELETE, UPDATE가 불가능하며, INSERT는 가능하다.



728x90
반응형