2015-05-19 73 views
1

我有一些不同的項目應該複製到不同的組織。我已經通過合併聲明完成了這項工作。當項目不存在時,我工作的很好,但下次應該更新時,它會在每個組織中創建新項目。我應該在這裏合併嗎?

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(...); 

我想它有一些待辦事項與條件doesn't要麼晉級下一次和新項目產生,但我不明白爲什麼..

也許it's更好地只是做簡單的插?

+1

如果您的條件包含'target.items.name = source.items.name',匹配時更新目標名稱沒有任何意義。 –

+0

表中有不同的行,需要用其他行更新。來自一個組織的項目應該更新另一個組織的項目。 –

+0

從你的描述或你的非工作代碼中,我不清楚你想完成什麼。如果你有一個簡單的插入實際工作,也許你可以在你的問題中使用include? – hvd

回答

0

來自一個組織的項目應該更新另一個組織中的項目。

合併語句不支持更新「其他行」。從概念上講,它是逐行操作的。源和目標被連接(一個完整的外部連接),併爲每個連接結果決定一個發生的動作。爲了更新和刪除發生在已連接的目標表格行上的操作。

您需要使用多個語句。