首页 > 解决方案 > 如何在 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;

在此处输入图像描述

标签: mysqlsql

解决方案


使用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

推荐阅读