Merge은 2008 부터 사용가능
2개의 테이블을 Merge(병합)해주는 기능으로
병합시
- 기존에 존재하는 데이터는 Update
- 신규 추가되는 데이터는 Insert
- 삭제 가능
|
USE WorkDB GO
CREATE TABLE Master ( UserID VARCHAR(10) ,Name VARCHAR(10) CONSTRAINT PK_Master PRIMARY KEY (UserID) ) GO
CREATE TABLE Temp ( UserID VARCHAR(10) ,Name VARCHAR(10) CONSTRAINT PK_Temp PRIMARY KEY (UserID) ) GO |
2개의 테이블 Master 와 Temp 를 Merge 해보겠습니다.
최종결과는 Master에 저장이 됩니다.
테스트 자료를 생성 합니다.
INSERT INTO Master VALUES ('sorrow1999','백경록') INSERT INTO Master VALUES ('marsland','백경팔') INSERT INTO Temp VALUES ('after','그후로') INSERT INTO Temp VALUES ('marsland','백경민') |
Merge 를 위한 쿼리문은 아래와 같습니다.
|
SET NOCOUNT ON
MERGE Master
USING Temp
ON Master.UserID = Temp.UserID WHEN MATCHED THEN UPDATE SET Master.Name = Temp.Name WHEN NOT MATCHED THEN INSERT (UserID, Name) VALUES (Temp.UserID, Temp.Name) ; GO |
실행 결과는 아래와 같습니다.
새로 추가된 after 는 insert 되었으며
이름이 변경된 marsland 는 백경팔 -> 백경민 으로 update 되었습니다.
대량의 데이터 취합 및 갱신시에 사용하면 편할듯 합니다.
기존 고객사 서버의 자료를 가져와서 내부 솔루션 서버에 입력후 활용할때 일일이 쿼리를 작성해서 취합 했었는데 해당부분을 Merge 를 이용하여 대체하면 훨씬 간결해 질것 같습니다.



