我正在阅读如何使用单个查询更新多行但我有一个问题,我想知道你是否可以帮助我。
我想用一个查询更新多个列和行,但我需要它们像这样更新:
如果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
非常感谢
答案 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