SQL ServerSQL Server Merge语句之以

 

    Merge关键字于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.就SQL Server插入的Merge语句

 

  
我们还好以TOP关键字限制目标表被操作的行,如图8所著。在图2的说话基础及长了TOP关键字,我们看到只有个别执行于更新。

   SQL Server 8

    图8.用到TOP关键字之Merge语句

 

   
但仅仅是MATCHED这种限制标准往往不克满足实际需求,我们可在图7那个语句的功底及助长AND附加上额外之限标准,如图9所著。

    SQL Server 9

    图9.添加了AND限制标准的Merge语句

 

Merge关键字之一部分限制

  •     使用Merge关键字只能更新一个说明
  •     源表中不克发重复的记录

 

相关文章