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
반응형