什么是CASE函数?
CASE函数是MySQL中一种用于多重条件判断的函数。它允许用户根据条件对数据进行分类和统计,并生成新的结果组。使用该函数可以让查询语句更加灵活,在实际的应用场景中,它可以使用在WHERE子句以及SELECT语句中。
语法格式
CASE函数的基本语法如下:
CASE expression
WHEN value_1 THEN result_1
WHEN value_2 THEN result_2
...
[ELSE else_result]
END
- expression:需要进行条件判断的表达式。
- value_1,value_2,...:用于比较的值。
- result_1,result_2,...:满足条件时返回的结果。
- ELSE else_result:若上述所有条件都不满足,则返回else_result。
以上是最基本的语法格式,还可以使用其他格式进行组合,实现更加复杂的条件判断:
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
[ELSE else_result]
END
- condition_1,condition_2,...:是用于条件计算的表达式。
CASE函数的应用场景
下面我们来介绍一些使用CASE函数的实际应用场景:
1.根据条件过滤数据
当我们需要从某张表中筛选出符合特定条件的数据时,可以通过在WHERE子句中加入CASE条件语句实现筛选。下面的示例展示了根据成绩筛选出优、良、中、及格、不及格这五类学生的SQL语句:
SELECT name, score,
CASE
WHEN score >= 90 THEN '优'
WHEN score >= 80 THEN '良'
WHEN score >= 70 THEN '中'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END
AS grade
FROM student;
以上语句可以将成绩分为优、良、中、及格、不及格五个等级,同时生成一个grade字段。
2.使用CASE函数进行数值计算
在实际应用中,我们可能需要对某一列数据进行数值计算,并得到一个排序结果。如下面的示例将学生的姓名、成绩和总分列出,并对总分进行排序:
SELECT name,score,
CASE
WHEN subject = '数学' THEN score*0.8
WHEN subject = '英语' THEN score*0.7
WHEN subject = '语文' THEN score*0.6
END
AS total_score
FROM student
ORDER BY total_score DESC;
以上语句将不同学科成绩按照不同比例计算,生成一个total_score字段,并按照total_score降序排序。
3.使用CASE函数进行数据分类
有时候我们需要将某一列数据进行分类,并对其进行分类统计。下面的示例展示了用CASE函数将学生按照男女分别统计出其总数:
SELECT
CASE
WHEN gender='男' THEN '男生'
ELSE '女生'
END
AS gender,
COUNT(*) AS total
FROM student
GROUP BY gender;
以上语句将学生按性别分为男生和女生,并用COUNT统计了每个分组中的学生总数。
总结
CASE函数是MySQL中一种非常灵活的多重条件判断函数,它可以根据用户需求,将数据进行分类、过滤、排序、计算等操作。在实际的应用中,我们可以将它应用到各种场景中,使得查询语句更加高效。