【发布时间】:2015-05-19 14:59:05
【问题描述】:
我有一些不同的项目应该复制到不同的组织。我已经用合并语句做到了这一点。当项目不存在时,我工作得很好,但下次它应该更新时,它会在每个组织中创建新项目。
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(...);
我想这与下次条件不符合条件并且新项目创建但我不明白为什么..
也许只做简单的插入会更好?
【问题讨论】:
-
如果您的条件包含
target.items.name = source.items.name,则在匹配时更新目标名称没有任何意义。 -
表中有不同的行需要用其他行更新。一个组织的项目应该更新另一个组织的项目。
-
从您的描述或您的非工作代码中我不清楚您希望完成什么。如果您有一个实际有效的简单插入,也许您可以在您的问题中使用包含它?
标签: sql merge sql-server-2012 bulkinsert bulk