티스토리 뷰

dev_note/TIL

MSSQL MERGE문 알아보기

jjoylee 2022. 7. 7. 15:32

원본 테이블과의 조인 결과를 기반으로 대상 테이블에서 삽입, 업데이트 또는 삭제 작업을 실행한다.

 

📌 쿼리 구조

target_table : MERGE 문의 WHEN 절에 지정된 삽입, 업데이트 또는 삭제 작업의 대상

table_source : target_table의 데이터 행과 일치하는 데이터 원본을 지정한다. 서브쿼리 또는 다른 테이블 SELECT 쿼리가 들어갈 수 있다.

보통 MERGE문은 행이 없는 경우 행을 삽입, 행이 일치하지 않는 경우 행을 업데이트하는 작업에 많이 사용한다.

 

📌 WHEN MATCHED

최대 두 개의 WHEN MATCHED 절을 사용할 수 있다.

두 개의 WHEN MATCHED 절을 사용할 때 주의가 필요하다.

 

1. 첫번째 절에 AND 조건을 주어야 한다. 예 : WHEN MATCHED AND ~ THEN 조건을 만족할 때 실행할 쿼리

두 번째 WHEN MATCHED 절은 첫 번째 WHEN MATCHED 절이 적용되지 않은 경우에만 적용된다.

 

2. 하나는 UPDATE 동작을 지정해야 하고 다른 하나는 DELETE 동작을 지정해야 한다.

 

📌 WHEN NOT MATCHED & NOT MATCHED BY SOURCE

WHEN NOT MATCHED 절은 target_table에 행이 삽입되도록 지정한다. 즉, INSERT 쿼리만 사용 가능하다.

 

target_table의 데이터를 지우거나 갱신하고 싶을 때는 WHEN NOT MATCHED BY SOURCE 절을 사용해야 한다.

최대 두개의  WHEN NOT MATCHED BY SOURCE 절을 사용할 수 있다.

하나는 UPDATE, 하나는 DELETE 동작을 지정해야 한다.

 

📌 REFERENCE 

https://docs.microsoft.com/ko-kr/sql/t-sql/statements/merge-transact-sql?view=sql-server-ver16 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함