更新多个列和行sql表

时间:2014-04-09 22:06:42

标签: php sql database

我正在阅读如何使用单个查询更新多行但我有一个问题,我想知道你是否可以帮助我。

我想用一个查询更新多个列和行,但我需要它们像这样更新:

如果column1和column2(在所有行中)== column1和column2(在特定的row1中),则更新column3中的值(在所有行中)。如果不相等那么值Whatever但是如果>或者<然后重视随便。

示例:                                        第1栏----第2栏-----第3栏

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

非常感谢

1 个答案:

答案 0 :(得分:0)

我认为您所说的是您希望根据与特定行中的值匹配来更新行。我们可以通过左外连接来实现这一点。如果值匹配,则连接成功,因此'row1Match'将不为null。如果值不匹配,则'row1Match'将为null。然后我们可以使用它来推动更新。

如果我们假设表(我称之为MyTable)有一个ID列,并且示例中的'Row1'的ID为1,那么你想要这样的东西:

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