merge用法

来源:互联网 发布:自适应滤波算法 编辑:程序博客网 时间:2024/05/22 14:18

Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。

    可以想象出,需要使用Merge的场景比如:

·     数据同步

·     数据转换

·     基于源表对目标表做Insert,Update,Delete操作

merge [into] [目标表]
using <源表>
on 条件
when matched //添加成立,则操作

then 操作
when not matched  //目标表中没有ID,源表中有,则操作

then操作;

when not matched By Source //目标表存在,源表不存在 则操作

then操作;


Merge关键字的一些限制

使用Merge关键字只能更新一个表

源表中不能有重复的记录

https://docs.microsoft.com/zh-cn/sql/t-sql/statements/merge-transact-sql