SQL2008中的MERGE使用心得

来源:互联网 发布:织梦视频网站源码 编辑:程序博客网 时间:2024/05/21 09:43

MSDN:

一、MERGE 语句最多可以有两个 WHEN MATCHED 子句。如果指定了两个子句,则第一个子句必须同时带有一个 AND <search_condition> 子句。对于任何给定的行,只有在未应用第一个 WHEN MATCHED 子句的情况下,才会应用第二个 WHEN MATCHED 子句。如果有两个 WHEN MATCHED 子句,那么其中的一个必须指定 UPDATE 操作,而另一个必须指定 DELETE 操作。如果在 <merge_matched> 子句中指定了 UPDATE,并且根据 <merge_search_condition>,<table_source> 中的多个行与 target_table 中的某一行匹配,则 SQL Server 将返回错误。MERGE 语句无法多次更新同一行,也无法更新和删除同一行。

二、自己的理解:根据<merge_search_condition>,在<source_table>中对应有多条的记录,而在<target_table>中只有一条,那么将会报错:

      MERGE 语句试图多次更新或删除同一行。目标行与多个源行匹配时会出现这种情况。MERGE 语句无法多次更新/删除目标表的同一行。请简化 ON 子句,以确保目标行最多与一个源行匹配,也可以使用 GROUP BY 子句对源行分组。

      所以除了上面的那种情况下,其他情况都是正确的。

      下面是SQL语句:

原创粉丝点击