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