2014-04-09 139 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