SQL ServerSQL Server Merge语句的采用

 

    Merge关键字在SQL Server
2009被引入,它能将Insert,Update,Delete不难的并为一句。MSDN对于Merge的解释非常短小精悍:”根据与源表联接的结果,对指标表执行插入、更新或删除操作。例如,遵照在另三个表中找到的差别在贰个表中插入、更新或删除行,能够对八个表举办共同。”,通过那几个描述,大家得以看看Merge是关于对于四个表之间的数据开始展览操作的。

    能够想像出,需求选拔Merge的意况比如:

  •     数据同步
  •     数据转换
  •     基于源表对目的表做Insert,Update,Delete操作

 

采取Merge关键字的功利

    首先是尤为短小精悍的讲话,在SQL Server
2009事先从没Merge的时期,基于源表对目的表展开操作需求各自写一些条Insert,Update,Delete。而选取Merge,仅仅须求运用一条语句就好。上面我们来看3个例子。

    首先建立源表和目的表,并插入相关的多少,如图1所示。

  SQL Server 1

     图1.创制测试表并插入测试数据

   

    下边我们来写2个简练的Merge语句,如图2所示。

     SQL Server 2

     图2.二个简约的Merge语句

  

     所造成的结果如图3所示。

     SQL Server 3

     图3.Merge语句对此目标表的立异

 

     最后目的表的结果如图4所示。

     SQL Server 4

     图4.尾声目的表的结果

 

   
Merge语句还有一个无敌的效能是透过OUTPUT子句,可以将刚刚做过改变的数据开始展览输出。大家在地点的Merge语句后参加OUTPUT子句,如图5所示。

    SQL Server 5

    图5.Merge语句后增进OUTPUT子句

 

   此时Merge操作完毕后,将所改变的口舌进行输出,如图6所示。

   SQL Server 6

   图6.输出Merge操作产生的数码变动

 

  
当然了,下边包车型客车Merge关键字后边使用了八个WHEN…THEN语句,而以此讲话是可选的.也得以唯有新增或是仅仅删除,如图7所示。

   SQL Server 7

    图7.仅仅插入的Merge语句

 

  
咱们还足以行使TOP关键字限制目标表被操作的行,如图8所示。在图2的言辞基础上添加了TOP关键字,大家来看只有两行被更新。

   SQL Server 8

    图8.应用TOP关键字的Merge语句

 

   
但仅仅是MATCHED那种限制标准往往不可能满意实际须求,大家得以在图7那3个语句的底子上充裕AND附加上额外的范围条件,如图9所示。

    SQL Server 9

    图9.充分了AND限制标准的Merge语句

 

Merge关键字的一对限量

  •     使用Merge关键字只好更新1个表
  •     源表中不能够有重复的记录

 

相关文章