2016-03-21 57 views
0

一些計算後,我編譯了需要更新的記錄列表:如何爲臨時表中的每一行編寫更新查詢?

ID Name Value 
------------------- 
1  A  foo 
2  B  bar 
9  C  baz 

我想更新的一大表只有這些記錄:

update table set name = A, value = foo where ID = 1 
update table set name = B, value = bar where ID = 2 
update table set name = C, value = baz where ID = 9 

在現實中,列表的更新很長。我是否需要動態SQL來創建這些單獨的更新查詢,還是有更好的方法?

+0

需要更多的信息才能很好地回答,但假設數據庫包含需要在其他表中更新的記錄的ID,那麼您希望進行某種與連接更新。取決於您的來電者以及您要更新的ID以及相應的新名稱和值來自哪裏。 – mcr

回答

1

根據標題,我猜測新數據位於臨時表中。假設每個id只提到一次,就可以使用join

update t 
    set name = temp.name, 
     values = temp.value 
    from t join 
     #temp temp 
     on t.id = temp.id; 

您可以使用join即使id小號出現多次。如果是這樣,臨時表中的不確定記錄將用於更新。

相關問題