使用 MySQL 的 CASE 语句实现 otherwise 功能

在编程过程中,我们常常需要依据不同的条件执行不同的操作。在 MySQL 中,可以使用 CASE 语句来实现这种逻辑。具体而言,当我们需要实现一个默认情况(即“否则”),CASE 语句是非常有效的工具。本文将教你如何使用 MySQL 的 CASE 语句来实现 otherwise 功能。

整体流程

在开始之前,我们先了解一下实现的整体流程。以下是一个简单的步骤总结:

步骤 说明
1 创建一个示例数据库和表
2 插入一些示例数据
3 使用 CASE 语句来查询数据
4 解释代码的每个部分

步骤详解

1. 创建一个示例数据库和表

首先,我们需要创建一个示例数据库和一个数据表,以便进行操作。

-- 创建数据库
CREATE DATABASE test_db;

-- 选择数据库
USE test_db;

-- 创建数据表
CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    score INT
);
  • CREATE DATABASE test_db;:创建一个名为 test_db 的数据库。
  • USE test_db;:选择刚创建的数据库。
  • CREATE TABLE students (...);:创建一个名为 students 的表,包括学生的 idnamescore

2. 插入一些示例数据

接下来,插入一些示例数据以便进行测试。

INSERT INTO students (id, name, score) VALUES
(1, 'Alice', 85),
(2, 'Bob', 72),
(3, 'Charlie', 95),
(4, 'David', 60),
(5, 'Eva', 50);

3. 使用 CASE 语句查询数据

下面,我们将使用 CASE 语句来查询学生的分数,并根据分数给出相应的评估。其中,我们可以使用默认的 ELSE 子句来实现 otherwise 的功能。

SELECT name, score,
CASE 
    WHEN score >= 90 THEN '优秀'
    WHEN score >= 75 THEN '良好'
    WHEN score >= 60 THEN '及格'
    ELSE '不及格'  -- 这是 default,即 otherwise 的部分
END AS evaluation
FROM students;
  • SELECT name, score, CASE ... END AS evaluation:选择学生姓名、分数,并通过 CASE 语句得出每个学生的评估结果。
  • WHEN score >= 90 THEN '优秀':如果分数大于等于90,则评估为“优秀”。
  • WHEN score >= 75 THEN '良好':如果分数大于等于75,则评估为“良好”。
  • WHEN score >= 60 THEN '及格':如果分数大于等于60,则评估为“及格”。
  • ELSE '不及格':如果以上条件都不满足,则评估为“不及格”。

4. 解释代码的每个部分

通过上面的代码,我们可以在结果中看到每个学生的分数及其对应的评估,如下图所示。

pie
    title 学生评价比例
    "优秀": 1
    "良好": 2
    "及格": 1
    "不及格": 1

结尾

通过这篇文章,您应该了解到如何在 MySQL 中使用 CASE 语句来实现 otherwise 的效果。使用这种方法,我们可以根据条件对数据进行分类和评估。希望你能在实际项目中灵活运用 CASE 语句,从而更好地处理复杂的数据逻辑关系。如有任何问题,欢迎随时询问!