MySQL CASE语句

MySQL CASE语句

MySQL CASE语句

在MySQL中,CASE语句是一种逻辑表达式,用于根据给定的条件执行不同的操作。它类似于编程语言中的switch语句,可以根据条件选择不同的结果。

CASE语句语法

在MySQL中,CASE语句有两种格式:简单CASE表达式和搜索CASE表达式。

简单CASE表达式:

CASE value
    WHEN compare_value1 THEN result1
    WHEN compare_value2 THEN result2
    ...
    ELSE result
END

在简单CASE表达式中,将value与各个compare_value进行比较,如果找到匹配的值,则返回对应的result。如果没有找到匹配的值,则返回ELSE后的结果,如果没有ELSE,则返回NULL。

搜索CASE表达式:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END

在搜索CASE表达式中,根据条件进行匹配,满足条件时返回对应的结果。如果没有满足的条件,则返回ELSE后的结果,如果没有ELSE,则返回NULL。

CASE语句示例

下面通过示例来详细说明如何在MySQL中使用CASE语句。

示例数据准备

假设我们有一个学生成绩表grades,包含学生的姓名、科目和成绩。我们需要根据不同的成绩等级进行分类,可以使用CASE语句来实现。

首先创建grades表并插入数据:

CREATE TABLE grades (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    subject VARCHAR(50),
    score INT
);

INSERT INTO grades (name, subject, score) VALUES
('Alice', 'Math', 90),
('Bob', 'Math', 75),
('Charlie', 'Science', 85),
('David', 'Science', 60);

使用简单CASE表达式

在这个示例中,我们将根据学生的成绩对他们进行分类,具体分为A、B、C和D四个等级。

SELECT
    name,
    score,
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        ELSE 'D'
    END AS grade
FROM grades;

运行上述SQL查询语句后,将得到如下结果:

+---------+-------+-------+
| name    | score | grade |
+---------+-------+-------+
| Alice   | 90    | A     |
| Bob     | 75    | C     |
| Charlie | 85    | B     |
| David   | 60    | D     |
+---------+-------+-------+

使用搜索CASE表达式

接下来,我们将示例稍微变换,根据不同科目的成绩进行分类。

SELECT
    name,
    subject,
    CASE
        WHEN subject = 'Math' THEN
            CASE
                WHEN score >= 90 THEN 'A'
                WHEN score >= 80 THEN 'B'
                WHEN score >= 70 THEN 'C'
                ELSE 'D'
            END
        WHEN subject = 'Science' THEN
            CASE
                WHEN score >= 85 THEN 'A'
                WHEN score >= 70 THEN 'B'
                ELSE 'C'
            END
        ELSE 'Unknown'
    END AS grade
FROM grades;

运行上述SQL查询语句后,将得到如下结果:

+---------+---------+-------+
| name    | subject | grade |
+---------+---------+-------+
| Alice   | Math    | A     |
| Bob     | Math    | C     |
| Charlie | Science | A     |
| David   | Science | C     |
+---------+---------+-------+

总结

通过上述示例,我们了解了在MySQL中如何使用CASE语句根据不同的条件进行分类和操作。CASE语句是一个非常灵活和强大的工具,可以帮助我们更好地处理复杂的逻辑场景。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程