功能: 根据源表对目标表执行插入、更新或删除操作。最典型的应用就是进行两个表的同步
基本语法:
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;