첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170
-- 타겟 테이블을 생성한다.
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;
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요