我有一个难题,以下SQL查询的结果会是什么,以及它是如何工作的:
SELECT ...
CASE
WHEN (a.FIELD=1 AND b.FIELD=2) THEN 1
WHEN (a.FIELD=1 AND b.FIELD=3) THEN 3
WHEN (b.FIELD=2 AND c.FIELD=1) THEN 0
END)
..
FROM a
LEFT JOIN b ON a.ID = b.FOREIGN_KEY
LEFT JOIN c ON b.ID = c.FOREIGN_KEY
WHERE <conditions>所以基本上对于CASE语句来说有更多的条件是真的。MySQL是如何评估它们的?结果会是第一个真条件,还是最后一个条件?
谢谢
PS:我在MySQL文档中寻找,但是我没有找到任何提示。
发布于 2019-08-15 15:34:06
第一个匹配的条件获胜。
CASE WHEN search_condition THEN statement_list WHEN search_condition THEN statement_list ...ELSE statement_list结束大小写
对每个WHEN子句search_condition表达式求值,直到其中一个为真为止,此时将执行其对应的THEN子句statement_list。如果没有相等的search_condition,则执行ELSE子句statement_list。
https://stackoverflow.com/questions/57506238
复制相似问题