我应该在这里合并吗?

时间:2015-05-19 14:59:06

标签: sql merge sql-server-2012 bulkinsert bulk

我有一些不同的项目应该被复制到不同的组织。我用merge语句完成了这个。当项目不存在时我工作正常,但下次应该更新它时会在每个组织中创建新项目。

merge items as target
using
   (
   select items.name, items.value, items.org
   from Items
   ) as source
on (target.items.name = source.items.name and 
    target.items.value = '50')
when matched then
   update set target.items.name = source.items.name
when not matched by target then
Insert(...)
Values(...);

我想它有一些东西,下次这个条件不符合条件而且新项目会产生,但我不明白为什么......

也许只做简单的插入更好吗?

1 个答案:

答案 0 :(得分:0)

  

来自一个组织的项目应更新另一个组织中的项目。

merge语句不支持更新“其他行”。从概念上讲,它是逐行操作的。源和目标已连接(完全外部联接),并且对于每个联接结果,您可以决定发生的一个操作。对于更新和删除操作发生在连接的目标表行。

您需要使用多个语句。