2014-04-09 93 views
0

我正在閱讀如何使用單個查詢更新多行,但我有一個問題,我想知道你是否可以幫助我。更新多列和行sql表

我要更新多列和行用單查詢,但我需要他們來更新這樣的:

如果列1列2和(在所有行)==列1列2和(在特定ROW1)然後更新列3中的值(在所有行中)。如果不相等,那麼值無論如果>或<然後值任意。

例: 列1 ---- -----列2欄3

Row1  2  3     
Row2  2  3 (then) Value1 
Row3  2  2 (then) Value2 
Row4  2  3 (then) Value1 

非常感謝

回答

0

我想你的意思是,你要更新行的基礎上匹配到特定行中的值。我們可以通過做一個左外連接來實現這一點。如果值匹配,則連接成功,因此'row1Match'不會爲空。如果值不匹配,那麼'row1Match'將爲空。然後我們可以使用它來驅動更新。

如果我們假設表(我叫MyTable的)有一個ID列,而這ROW1「在你的例子有1的ID,那麼你想是這樣的:

UPDATE toUpdate 
SET Column3 = (CASE WHEN row1Match IS NOT NULL THEN 'Value1' ELSE 'Value2' END) 
FROM MyTable toUpdate 
    LEFT OUTER JOIN MyTable row1Match ON row1Match.Column1 = toUpdate.Column1 
              AND row1Match.Column2 = toUpdate.Column2 
WHERE row1Match.ID = 1