SQL Update查询

时间:2010-10-06 18:13:01

标签: sql sql-update

我可以在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'

2 个答案:

答案 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

以上两者都是等效的