mysql case when 控制流函数

发布时间 2023-04-06 10:38:41作者: vincent2023

是 MySQL 中的一个控制流函数。它用于在查询中执行条件判断,根据某个条件的真假来决定返回哪个值。CASE WHEN的基本语法如下

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    [ELSE resultN]
END

其中,condition1、condition2等表示条件表达式,result1、result2等表示对应条件成立时返回的值。ELSE子句是可选的,当所有条件都不成立时,会返回 ELSE子句中的值。

准备数据

-- 创建学生表
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    score INT
);

-- 插入数据
INSERT INTO students (student_id, name, score) VALUES
    (1, 'Alice', 95),
    (2, 'Bob', 85),
    (3, 'Carol', 65),
    (4, 'David', 40);

 以下是一个使用 CASE WHEN的示例。假设我们有一个学生表(students),包含以下字段:student_id(学生 ID)、name(学生姓名)和 score(学生成绩)。我们希望查询每个学生的姓名、成绩以及成绩等级(优秀、良好、及格、不及格)。

示例数据:

student_idnamescore
1 Alice 95
2 Bob 85
3 Carol 65
4 David 40
SELECT
    name,
    score,
    -- 使用 CASE WHEN 对成绩进行等级划分
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 80 THEN '良好'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM
    students;

查询结果:

namescoregrade
Alice 95 优秀
Bob 85 良好
Carol 65 及格
David 40 不及格

在此示例中,我们使用 **CASE WHEN对学生成绩进行等级划分。CASE WHEN**语句中的条件从上到下依次判断,当某个条件成立时,返回对应的值(成绩等级)。在这个例子中,当成绩大于等于 90 分时,返回 '优秀';成绩大于等于 80 分时,返回 '良好';成绩大于等于 60 分时,返回 '及格';否则,返回 '不及格'。