첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ MERGE 명령을 사용해 타겟 테이블에 소스 테이블의 데이터를 추가하거나 소스 테이블의 데이터로 수정하는 방법을 보여준다.

 

▶ 예제 코드 (SQL)

-- 타겟 테이블을 생성한다.
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

댓글을 달아 주세요