SQL Update查询

kun*_*mra 2 sql sql-update

我可以WHENUPDATE子句中使用多个条件来更新单个列.

我想更新具有列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'
Run Code Online (Sandbox Code Playgroud)

Red*_*ter 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' 
Run Code Online (Sandbox Code Playgroud)

CASE有两种备用语法.如上所述,另一个是您想要将单个值与其他值进行比较的位置,如下所示:

UPDATE TABLE 
SET ID = CASE ID 
    when 2
        then 1 
    when 5 
        then 8 
    when 7
        then 6 
END
where NAME = 'abc' 
Run Code Online (Sandbox Code Playgroud)