2024年4月19日发(作者:)

mysql中case的用法

1. 概述

CASE语句是MySQL中的一种逻辑表达式,用于根据条件选择不同的操作或返回不

同的值。它的使用方式类似于其他编程语言中的switch语句。通过CASE语句,我

们可以在查询结果中进行条件判断,实现数据的分组、筛选和计算等功能。

2. 语法

CASE语句有两种基本形式:简单CASE表达式和搜索CASE表达式。它们的语法分

别如下:

2.1 简单CASE表达式

CASE expression

WHEN value1 THEN result1

WHEN value2 THEN result2

...

ELSE result

END

在简单CASE表达式中,expression是要比较的列或表达式,每个WHEN子句后面

跟着一个值,并在满足条件时返回对应的结果。ELSE子句是可选的,当没有条件

满足时返回ELSE后面指定的默认结果。

2.2 搜索CASE表达式

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2

...

ELSE result

END

在搜索CASE表达式中,每个WHEN子句后面跟着一个条件表达式,根据条件的结果

返回对应的结果。ELSE子句同样是可选的。

3. 示例

为了更好地理解和使用CASE语句,我们来看几个示例:

3.1 简单CASE表达式示例

假设我们有一个学生成绩表,其中包含学生姓名、科目和分数三个字段。我们要查

询每个学生的科目和对应的等级,其中90分以上为A,80-89分为B,70-79分为

C,60-69分为D,60分以下为E。

SELECT name, subject,

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 scores;

通过使用简单CASE表达式,我们将根据不同的分数范围返回不同的等级,将它命

名为grade。查询结果会包含每个学生的姓名、科目和对应的等级。

3.2 搜索CASE表达式示例

假设我们有一个员工表,其中包含员工姓名、所属部门和工资三个字段。现在我们

要查询每个部门的平均工资,并将其分为低、中、高三档。

SELECT department,

CASE

WHEN AVG(salary) < 3000 THEN '低'

WHEN AVG(salary) >= 3000 AND AVG(salary) < 5000 THEN '中'

ELSE '高'

END AS salary_level

FROM employees

GROUP BY department;

通过使用搜索CASE表达式,我们将根据平均工资的值将部门分为不同的档次,将

结果命名为salary_level。查询结果会包含每个部门和对应的工资档次。

4. 总结

通过本文的介绍,我希望你能了解并掌握MySQL中CASE语句的使用方式。无论是

简单CASE表达式还是搜索CASE表达式,它们都为我们提供了一种方便快捷的条件

判断和结果返回的方法。在实际的数据查询和分析中,CASE语句广泛应用于数据

的处理和转化,能够帮助我们更灵活地处理各种需求。

参考资料

• [MySQL文档](