mysql - 如何在 SQL 中执行嵌套 if 语句?
问题描述
编写一个程序来检查最新测试的答案。该程序将获得一个包含以下列的表格答案:
id
- 问题的唯一 ID;
correct_answer
- 问题的正确答案,以字符串形式给出;
given_answer
- 问题的答案,可以为 NULL。
您的任务是返回带有列 id 和列检查的表,其中每个答案 id 应返回以下字符串:
"no answer"
如果given_answer
为空;
"correct"
如果 与given_answer
相同correct_answer
;
"incorrect"
如果given_answer
不为空且不正确。
将答案表中的记录按 排序id
。
CREATE PROCEDURE testCheck()
SELECT id, IF (...) AS checks
FROM answers
ORDER BY id;
解决方案
使用CASE
而不是IF
在有多个条件时使用。
SELECT id,
CASE WHEN given_answer IS NULL THEN 'no answer'
WHEN given_answer = correct_answer THEN 'correct'
ELSE 'incorrect'
END as checks
FROM answers
ORDER BY id