MySQL CASE更新多个列

Vil*_*men 23 mysql sql case

我想使用case语句更新表中的多个列,但我找不到如何执行此操作(这是否可行).我想出了以下无效的引用查询:

UPDATE tablename SET
    CASE name
        WHEN 'name1' THEN col1=5,col2=''
        WHEN 'name2' THEN col1=3,col2='whatever'
        ELSE col1=0,col2=''
    END;
Run Code Online (Sandbox Code Playgroud)

有没有办法用有效的SQL实现预期的结果?

bob*_*olt 34

UPDATE tablename
SET col1 = CASE WHEN name = 'name1' THEN 5 
                WHEN name = 'name2' THEN 3 
                ELSE 0 
           END
 , col2 = CASE WHEN name = 'name1' THEN '' 
               WHEN name = 'name2' THEN 'whatever' 
               ELSE '' 
          END
;
Run Code Online (Sandbox Code Playgroud)


ean*_*533 8

我不知道你做什么干净的方式.等效的有效SQL更新将是:

UPDATE tablename SET
    col1 = CASE name WHEN 'name1' THEN 5 WHEN 'name2' THEN 3 ELSE 0 END,
    col2 = CASE name WHEN 'name1' THEN '' WHEN 'name2' THEN 'whatever' ELSE '' END;
Run Code Online (Sandbox Code Playgroud)

当然这不是很漂亮,需要'name1'多次重复相同的情况(例如),但我认为不可能有任何其他方式.