具有多个SET和WHERE的SQL语句

Pro*_*Nov 41 sql db2

我想知道这是否是一个有效的查询:

UPDATE  table
SET ID = 111111259

WHERE ID = 2555

AND SET ID = 111111261

WHERE ID = 2724

AND SET ID = 111111263

WHERE ID = 2021

AND SET ID = 111111264

WHERE ID = 2017
Run Code Online (Sandbox Code Playgroud)

Bra*_*one 50

没有!

你需要单独处理这些

Update [table]
Set ID = 111111259
WHERE ID = 2555

Update [table]
Set ID = 111111261
WHERE ID = 2724

--...
Run Code Online (Sandbox Code Playgroud)


nik*_*trs 45

最佳选择是多次更新.

或者,您可以执行以下操作,但建议:

UPDATE table
SET ID = CASE WHEN ID = 2555 THEN 111111259 
              WHEN ID = 2724 THEN 111111261
              WHEN ID = 2021 THEN 111111263
              WHEN ID = 2017 THEN 111111264
         END
WHERE ID IN (2555,2724,2021,2017)
Run Code Online (Sandbox Code Playgroud)

  • 如果我的脚本帮助某人解决他的问题或学到了什么,那么我已经获得了奖励! (11认同)
  • 为什么不建议这样做?你能解释一下吗?非常感谢! (3认同)
  • 为什么不建议这样做? (3认同)
  • @PhilippOtto和Kemal Emal以及未来的读者。因为使用CASE语句比进行单个查询要花更多的钱(就像被接受的答案一样)。 (2认同)

Ahm*_*mad 14

不.这不是有效的查询.您只能有一个包含多个字段的SET语句,但也有一个WHERE子句

update table1 set field1=value1, field2=value2, field3=value3 where filed4=value5
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ned 7

,这就是你的做法:

UPDATE table SET ID = 111111259 WHERE ID = 2555

UPDATE table SET ID = 111111261 WHERE ID = 2724

UPDATE table SET ID = 111111263 WHERE ID = 2021

UPDATE table SET ID = 111111264 WHERE ID = 2017
Run Code Online (Sandbox Code Playgroud)


Abd*_*hid 5

您还可以像这样使用 case:

UPDATE  table
SET ID = case

when ID = 2555 then 111111259

when ID = 2724 then 111111261

when ID = 2021 then 111111263

when ID = 2017 then 111111264

else ID
end
Run Code Online (Sandbox Code Playgroud)