SQL ServerSQL Server中之Merge关键字

Merge关键字是一个神奇的DML关键字。它以SQL Server
2008让引入,它能够以Insert,Update,Delete简单的并也同样句子。MSDN对于Merge的解释很的短小精悍:”根据与源表联接的结
果,对目标表执行插入、更新或去操作。例如,根据在旁一个表中找到的差异在一个表中插入、更新或删除行,可以本着少数只说明展开协同。”,通过之描述,我们
可以看看Merge是有关对有数个说明内的数额进行操作的。

    可以想像发生,需要以Merge的景象比如:

  •     数据并
  •     数据易
  •     基于源表对目标表开Insert,Update,Delete操作

 

采用Merge关键字之补益

    首先是更为短小精悍的口舌,在SQL Server
2008事先从没Merge的时期,基于源表对目标表展开操作需要各自写一些漫漫Insert,Update,Delete。而采用Merge,仅仅待运用相同修告句就吓。下面我们来拘禁一个例。

    首先建立源表和目标表,并插入相关的数量,如图1所显示。

 
SQL Server 1

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

   

    下面我们来形容一个简单的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那个语句的根底及添加AND附加上额外的范围法,如图9所出示。

   
SQL Server 9

    图9.增长了AND限制标准的Merge语句

 

Merge关键字的片克

  •     使用Merge关键字只能更新一个表明
  •     源表中不克来更的笔录

 

小结

    本文简单说明了Merge关键的许之运。如果你下的凡SQL Server
2008随后的版,在直面一些遵照库存结账之类的事务时,放弃IF…ELSE和手写UPDATE,Insert吧,使用Merge关键字可以使这类操作逾轻松快乐。

相关文章