--Create a target table
CREATE TABLE Products
(
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Rate MONEY
)
GO
--Insert records into target table
INSERT INTO Products
VALUES
(1, 'Tea', 10.00),
(2, 'Coffee', 20.00),
(3, 'Muffin', 30.00),
(4, 'Biscuit', 40.00)
GO
--Create source table
CREATE TABLE UpdatedProducts
(
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Rate MONEY
)
GO
--Insert records into source table
INSERT INTO UpdatedProducts
VALUES
(1, 'Tea', 10.00),
(2, 'Coffee', 25.00),
(3, 'Muffin', 35.00),
(5, 'Pizza', 60.00)
GO
SELECT * FROM Products
SELECT * FROM UpdatedProducts
GO
MERGE Products AS TARGET
USING UpdatedProducts AS SOURCE
ON (TARGET.ProductID = SOURCE.ProductID)
WHEN MATCHED AND TARGET.ProductName <> SOURCE.ProductName
OR TARGET.Rate <> SOURCE.Rate THEN
UPDATE SET TARGET.ProductName = SOURCE.ProductName,
TARGET.Rate = SOURCE.Rate
WHEN NOT MATCHED BY TARGET THEN
INSERT (ProductID, ProductName, Rate)
VALUES (SOURCE.ProductID, SOURCE.ProductName, SOURCE.Rate)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
----------------------------------------------------------------------------------------------------------------------
Merge 테이블 사용할 기회가 생겨 구글링 해보았음.
좋은 예제인거 같아서 올려봄.
[참고] http://msdn.microsoft.com/en-us/library/bb510625.aspx
'030. Database > 02. MS_SQL' 카테고리의 다른 글
[MSSQL] 쿼리 단축키 이용 (3) | 2012.08.22 |
---|---|
[MSSQL] Procedure 내의 포함된 문자열 검색 (0) | 2012.08.17 |
[MSSQL] 데이터 정렬관련 (0) | 2012.08.12 |
[MSSQL] View 테이블에 index를 걸자 (0) | 2012.07.11 |
[MSSQL] 달력 테이블 만들기 (0) | 2012.06.22 |
WRITTEN BY
- 테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게