MySQL 中的 case 语句

作者:编程家 分类: mysql 时间:2025-10-31

MySQL 中的 case 语句及其用法

MySQL 中的 case 语句是一种用于根据条件进行条件判断和分支选择的语句。它允许根据不同的条件执行不同的操作或返回不同的结果。在本文中,我们将深入了解 MySQL 中的 case 语句的用法,并提供一些实际示例代码来帮助读者更好地理解其应用。

基本语法

MySQL 中的 case 语句有两种基本语法形式:简单 case 语句和搜索 case 语句。下面是它们的基本语法:

1. 简单 case 语句:

sql

CASE expression

WHEN value1 THEN result1

WHEN value2 THEN result2

...

ELSE result

END

2. 搜索 case 语句:

sql

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2

...

ELSE result

END

在简单 case 语句中,我们使用一个表达式来进行条件判断,当表达式的值与某个 value 匹配时,返回相应的 result。最后的 else 子句是可选的,用于处理没有匹配到任何条件的情况。

而在搜索 case 语句中,我们根据不同的条件进行判断,当某个条件满足时,返回相应的 result。同样地,最后的 else 子句也是可选的。

实际应用案例

下面我们将通过一些具体的案例来演示 MySQL 中的 case 语句的用法。

案例一:根据学生分数判断等级

假设我们有一个名为 students 的表,其中包含了学生的姓名和分数。我们想要根据学生的分数判断他们的等级,具体要求如下:

- 90 分以上为 A 级

- 80 分以上为 B 级

- 70 分以上为 C 级

- 60 分以上为 D 级

- 60 分以下为 E 级

我们可以使用简单 case 语句来实现这个功能,代码如下:

sql

SELECT name, score,

CASE

WHEN score >= 90 THEN 'A'

WHEN score >= 80 THEN 'B'

WHEN score >= 70 THEN 'C'

WHEN score >= 60 THEN 'D'

ELSE 'E'

END AS grade

FROM students;

这段代码将根据学生的分数将其划分到对应的等级,并将结果作为新的列名为 grade 的输出。

案例二:统计订单金额的折扣

假设我们有一个名为 orders 的表,其中包含了订单的编号和金额。我们想要根据订单的金额计算折扣,并将结果作为新的列名为 discount 的输出,具体要求如下:

- 订单金额在 1000 以上,折扣为 20%

- 订单金额在 500 到 1000 之间,折扣为 10%

- 订单金额在 500 以下,没有折扣

我们可以使用搜索 case 语句来实现这个功能,代码如下:

sql

SELECT order_number, amount,

CASE

WHEN amount > 1000 THEN amount * 0.8

WHEN amount >= 500 THEN amount * 0.9

ELSE amount

END AS discount

FROM orders;

这段代码将根据订单的金额计算对应的折扣,并将结果作为新的列名为 discount 的输出。

本文介绍了 MySQL 中的 case 语句的基本语法和用法,并通过实际应用案例进行了演示。通过使用 case 语句,我们可以根据不同的条件进行条件判断和分支选择,从而实现更灵活的数据处理和结果返回。希望读者通过本文的介绍和示例代码,对 MySQL 中的 case 语句有更深入的理解和应用。