功能: 根據源表對目標表執行插入、更新或刪除操作。最典型的應用就是進行兩個表的同步
基本語法:
MERGE 目標表
USING 源表
ON 匹配條件
WHEN MATCHED THEN
語句
WHEN NOT MATCHED THEN
語句;
MERGE語句最後的分號是不能省略
擴展:
WHEN NOT MATCHED BY TARGET
表示目標表不匹配,BY TARGET是默認的
等價於 WHEN NOT MATCHED THEN
WHEN NOT MATCHED BY SOURCE
表示源表不匹配,即目標表中存在,源表中不存在
eg:
-- 源表,目標表
CREATE TABLE [dbo].[表](
[id] [int] NOT NULL PRIMARY KEY,
[test] [nvarchar](50) NULL
);
-- 將源表數據,同步到目標表
(兩表紀錄都存在,更新,
目標表紀錄不存在,插入,
源表紀錄不存在,目標表紀錄存在, 刪除目標表紀錄)
MERGE 目標表 AS d
USING
源表 AS s
ON s.id = d.id
WHEN NOT MATCHED BY SOURCE THEN
DELETE
WHEN NOT MATCHED BY TARGET THEN
INSERT(id, test)
VALUES(s.id,s.test)
WHEN MATCHED THEN
UPDATE SET d.test = s.test;