我正在尝试使用以下查询更新 SQL 表中几列的多条记录。
(我希望用 A1 更新 A,用 B1 更新 B,用 C1 更新 C,等等)
UPDATE Employee
SET CASE WHEN name ='A' then 'A1' END
CASE WHEN name ='B' then 'A2' END
CASE WHEN name ='C' then 'A3' END
CASE WHEN name ='D' then 'A4' END
CASE WHEN name ='E' then 'A5' END
CASE WHEN name ='F' then 'A6' END
CASE WHEN name ='G' then 'A7' END
CASE WHEN name ='H' then 'A8' END
CASE WHEN name ='J' then 'A9' END
CASE WHEN name ='K' then 'B0' END
CASE WHEN name ='L' then 'B1' END ,
CASE WHEN Category = 'recrods' THEN 'records' END ,
CASE WHEN featureID ='140' then 'CV5' END
WHERE School = '5000'
出现错误:关键字“CASE”附近的语法不正确。当然,我在这里遗漏了一些东西。
请帮帮我。非常感谢:)
最佳答案
在 set
之后,您首先需要一个列。也许:
UPDATE Employee
SET name = (CASE WHEN name ='A' then 'A1'
WHEN name ='B' then 'A2'
WHEN name ='C' then 'A3'
WHEN name ='D' then 'A4'
WHEN name ='E' then 'A5'
WHEN name ='F' then 'A6'
WHEN name ='G' then 'A7'
WHEN name ='H' then 'A8'
WHEN name ='J' then 'A9'
WHEN name ='K' then 'B0'
WHEN name ='L' then 'B1'
ELSE name
END),
category = (CASE WHEN Category = 'recrods' THEN 'records' ELSE category END),
featureID = (CASE WHEN featureID ='140' then 'CV5' else featureID END)
WHERE School = '5000' ;
关于mysql - 无法通过一个查询更新多个记录(CASE/WHEN)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456641/