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
반응형
그리드형(광고전용)
'Database > SQLServer' 카테고리의 다른 글
[DATABASE/SQLSERVER] 로그 정리하기 (0) | 2014.12.06 |
---|---|
[DATABASE/SQLSERVER] FK 삭제문 만들기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] FK 생성문 만들기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] CROSS JOIN 키워드 : 크로스 조인하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] 저장 프로시저 참조 테이블 및 컬럼 정보 조회하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] 스키마 구하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] 로그인 계정 구하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] DATEPART 함수 사용하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] DATEDIFF 함수 사용하기 (0) | 2014.12.06 |
[DATABASE/SQLSERVER] DATEADD 함수 사용하기 (0) | 2014.12.06 |
댓글을 달아 주세요