我有一个使用CASE子句的MySQL UPDATE语句
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
END
WHERE buildFK = 1;
Run Code Online (Sandbox Code Playgroud)
以上陈述有效.然而,当我删除其中一个WHEN语句时,它会中断并且错误表明CASE子句没有返回任何内容.是CASE子句必须有多个WHEN才能运行.
我事先不知道我需要多少更新,所以我正在尝试构建一个可以处理一个或多个更新的更新语句.
感谢您提供的任何见解.
rec*_*ecf 28
这不是CASE必须有多个WHEN...THEN,它必须处理你给它的所有日期.
如果您删除了其中一个条款,则会留下一个漏洞.例如
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Run Code Online (Sandbox Code Playgroud)
使用此更新语句,如果parkFK为2,则更新失败,因为CASE无法处理输入.
您可以通过在where子句中添加另一行来限制源数据(例如AND partFK in (1,2)),也可以ELSE在case表达式中添加一行.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Run Code Online (Sandbox Code Playgroud)
但是,根据您显示的SQL语句,可能有更好的方法.据推测,partFK是其他表的外键.你quantity能从那里拉出价值吗?