■ MERGE 명령을 사용해 타겟 테이블에 소스 테이블의 데이터를 추가하거나 소스 테이블의 데이터로 수정하는 방법을 보여준다.
▶ 예제 코드 (SQL)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
-- 타겟 테이블을 생성한다. CREATE TABLE dbo.TargetTable ( UserID VARCHAR(20) ,Name VARCHAR(10) ,Phone CHAR(13) ,[Address] VARCHAR(100) ,CONSTRAINT PKTargetTable PRIMARY KEY (UserID) ) GO INSERT INTO dbo.TargetTable VALUES ('joo' , '주형권' , '010-1234-5678', '경기도고양시덕양구화정동' ); INSERT INTO dbo.TargetTable VALUES ('hyoung', '주형진' , '010-1111-5678', '경기도고양시덕양구행신동' ); INSERT INTO dbo.TargetTable VALUES ('kwon' , '지순복' , '010-5678-5678', '경기도고양시덕양구일산동구'); -- 소스 테이블을 생성한다. CREATE TABLE dbo.SourceTable ( UserID VARCHAR(20) ,Name VARCHAR(10) ,Phone CHAR(13) ,[Address] VARCHAR(100) ,CONSTRAINT PKSourceTable PRIMARY KEY (UserID) ) GO INSERT INTO dbo.SourceTable VALUES ('kim', '김말똥', '010-5234-5678', '서울시서초구'); INSERT INTO dbo.SourceTable VALUES ('joo', '주형권', '010-8888-5678', '서울시강남구'); -- 병합 전 타겟 테이블을 출력한다. SELECT * FROM dbo.TargetTable; -- 타겟 테이블에 소스 테이블을 병합한다. MERGE TargetTable AS A USING SourceTable AS B ON B.UserID = A.UserID WHEN MATCHED THEN UPDATE SET A.Name = B.Name ,A.Phone = B.Phone ,A.[Address] = B.[Address] WHEN NOT MATCHED THEN INSERT ( UserID ,Name ,Phone ,[Address] ) VALUES ( B.UserID ,B.Name ,B.Phone ,B.[Address] ); -- 병합 후 타겟 테이블을 출력한다. SELECT * FROM dbo.TargetTable; -- 테이블을 삭제한다. DROP TABLE dbo.TargetTable; DROP TABLE dbo.SourceTable; |