我可以在WHEN
子句中使用多个UPDATE
条件来更新单个列。
我想更新包含列ID和NAME的表TABLE:
以下查询是否正确?
UPDATE TABLE
SET id = CASE id
WHEN id IN (2, 3, 4) THEN 1
WHEN id= 5 THEN 8
WHEN id IN(9, 7) THEN 6
WHERE name = 'abc'
答案 0 :(得分:5)
是的,允许这样做,但在ID
之后删除CASE
。而且,您需要END
您的案例。
UPDATE TABLE
SET ID = CASE
when ID in (2,3,4)
then 1
when ID = 5
then 8
when ID in (9,7)
then 6
END
where NAME = 'abc'
CASE有两种备用语法。如上所述,另一个是您希望将单个值与其他值进行比较的位置,如下所示:
UPDATE TABLE
SET ID = CASE ID
when 2
then 1
when 5
then 8
when 7
then 6
END
where NAME = 'abc'
答案 1 :(得分:2)
Case有两个版本:
版本1:
Case Id
When 2 Then 1
When 3 Then 1
When 4 Then 1
When 5 Then 8
When 7 Then 6
When 9 Then 6
End
版本2:
Case
When Id in (2,3,4) Then 1
When Id = 5 Then 8
When Id in (9,7) Then 6
End
以上两者都是等效的