본문 바로가기
DataBase/MsSql

MSSQL MERGE INTO 사용 방법 및 예제

by 아우럼 2024. 3. 21.
반응형

MERGE INTO 사용은 보통 원본 TABLE과의 조인 결과에서 대상 TABLE에 대한 삽입, 업데이트 또는 삭제 작업을 실행할 수 있습니다.

MERGE INTO 특징

MERGE 문을 통해 대상 테이블에 삽입, 업데이트 또는 삭제 작업을 수행할 수 있습니다.
조건에 맞춰 해당 테이블을 입력할 건지 수정할 건지 조절할 수 있습니다.
두 테이블 간의 데이터를 동기화하는 데 매우 효율적인 SQL 만입니다.

MERGE INTO 기본 구조

MERGE INTO 기본 문법.

MERGE INTO [Tarket table] AS T1
USING [Source table] AS S1
ON T1.[COLUMN1] = S1.[COLUMN1]
WHEN MATCHED THEN 
    UPDATE SET [COLUMN] = [VALUES] 
WHEN NOT MATCHED THEN
    INSERT ([COLUMN1], [COLUMN2]) 
    VALUES(S1.[COLUMN1], S1.[COLUMN2]) 
;

MERGE INTO 기본 설명.

MERGE 기본 소스 설명.

MERGE INTO 기본 소스.

MERGE BoardForMerge AS TAR
USING UserInfoForMerge AS SOR
	ON TAR.UserId = SOR.UserId
WHEN MATCHED THEN 
	UPDATE set UserNm = '' 
WHEN NOT MATCHED THEN
INSERT (BoardNo,BoardTitle,UserId) 
VALUES (100,'seoul',202401)
;

MERGE INTO 심화 활용

MERGE INTO 심화 문법.

MERGE INTO [Tarket table] AS T1 
USING (SELECT [COLUMN1], [COLUMN2] FROM [Source table]) AS S1
ON (T1.[COLUMN1] = A.[COLUMN1] 
AND T1.[COLUMN2] = A.[COLUMN2]) 
WHEN MATCHED AND 조건 THEN 
INSERT ([COLUMN1], [COLUMN2]) VALUES(S1.[COLUMN1], S1.[COLUMN2]) 
WHEN NOT MATCHED AND 조건 THEN 
UPDATE SET [COLUMN3] = S1.[COLUMN3] 
WHEN NOT MATCHED AND 조건 THEN 
DELETE;

MERGE INTO 심화 설명.

NOT MATCHED BY TARGET (= NOT MATCHED).
TARGET TABLE에 데이터가 없는 경우 TARGET TABLE에 INSERT NOT MATCHED와 동일하므로 BY TARGET는 생략도 가능합니다.
NOT MATCHED BY SOURCE.
SOURCE TABLE에는 없고 TARGET TABLE에만 존재하는 데이터를 TARGET TABLE에서 DELETE를 실행할 수 있습니다.
단, DELETE 문에는 WHERE 조건문을 작성할 수 없습니다.

MERGE 기본 심화 소스 설명.

MERGE INTO 심화 소스.

MERGE INTO  BoardForMerge AS TAR
USING (SELECT UserId 
        FROM UserInfoForMerge 
     )AS SOR
ON TAR.UserId = SOR.UserId
WHEN MATCHED THEN 
	UPDATE set UserNm = '' 
WHEN NOT MATCHED AND SOR.UserId <> '' THEN
INSERT (BoardNo,BoardTitle,UserId) 
VALUES (100,'seoul',SOR.UserId) 
WHEN NOT MATCHED BY SOURCE THEN 
DELETE;

 

반응형