MSSQL 的merge关键字实现两个表的同步

功能:  根据源表对目标表执行插入、更新或删除操作。最典型的应用就是进行两个表的同步

基本语法:
   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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值