MySQL UPDATE - 忽略不在 CASE 语句中的记录

jjr*_*bit 1 mysql sql mariadb

使用 CASE/WHEN/THEN 时如何忽略不在 case 语句内的记录?

例如,此语句将按预期更新三个匹配记录,但会将所有与 WHEN/THEN 子句不匹配的学生记录设置为 NULL

UPDATE table SET student = (CASE WHEN student = '10' THEN '100412'
                                 WHEN student = '17' THEN '100295' 
                                 WHEN student = '26' THEN '100981'
                            END)
WHERE year = '2019';
Run Code Online (Sandbox Code Playgroud)

如何跳过不在 CASE 语句内的记录并仅更改具有匹配子句的记录?

小智 5

对于跳过不在 case 语句中的记录,您可以使用类似的方法

UPDATE table SET student = (CASE WHEN student = '10' THEN '100412'
                                 WHEN student = '17' THEN '100295' 
                                 WHEN student = '26' THEN '100981'
                            END)
WHERE year = '2019' AND student IN ('10','17','26');
Run Code Online (Sandbox Code Playgroud)