SQL Server中的Merge关键字

Merge关键字是3个神奇的DML关键字。它在SQL Server
二零零六被引进,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释相当短小精悍:”依照与源表联接的结
果,对指标表执行插入、更新或删除操作。例如,依据在另一个表中找到的差别在一个表中插入、更新或删除行,能够对四个表实行联合。”,通过这一个描述,我们能够见到Merge是有关对于多少个表之间的数码进行操作的。

    能够想象出,供给动用Merge的场合比如:

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

 

选用Merge关键字的裨益

    首先是尤为短小精悍的言辞,在SQL Server
二零一零事先从未Merge的时代,基于源表对目的表展开操作供给各自写一些条Insert,Update,Delete。而采取Merge,仅仅必要运用一条语句就好。上边我们来看二个例子。

    首先成立源表和目的表,并插入相关的数码,如图壹所示。

 
图片 1

     图壹.成立测试表并插入测试数据

   

    上面我们来写一个回顾的Merge语句,如图二所示。

    
图片 2

     图2.一个不难易行的Merge语句

  

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

    
图片 3

     图三.Merge语句对于指标表的立异

 

     最终目的表的结果如图四所示。

    
图片 4

     图四.末段指标表的结果

 

   
Merge语句还有1个精锐的功效是由此OUTPUT子句,可以将刚刚做过改变的多寡实行输出。大家在地点的Merge语句后参加OUTPUT子句,如图五所示。

   
图片 5

    图伍.Merge语句后拉长OUTPUT子句

 

   此时Merge操作完成后,将所改变的语句实行输出,如图6所示。

  
图片 6

   图六.输出Merge操作发生的数目变动

 

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

  
图片 7

    图7.一味插入的Merge语句

 

  
大家还是能够利用TOP关键字限制指标表被操作的行,如图8所示。在图2的言语基础上丰盛了TOP关键字,大家看出只有两行被更新。

  
图片 8

    图捌.用到TOP关键字的Merge语句

 

   
但仅仅是MATCHED那种范围条件往往不能够满足实际要求,大家得以在图7那2个语句的功底上助长AND附加上额外的范围标准,如图玖所示。

   
图片 9

    图九.丰盛了AND限制条件的Merge语句

 

Merge关键字的片段限制

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

 

小结

    本文简单表明了Merge关键的字的运用。假若您利用的是SQL Server
二零零六从此的版本,在面对一些诸如仓库储存结账之类的工作时,遗弃IF…ELSE和手写UPDATE,Insert吧,使用Merge关键字能够使这类操作更是自在快活。

相关文章