SQL CASE WHEN 多条件嵌套

SQL CASE WHEN 多条件嵌套

SQL CASE WHEN 多条件嵌套

1. 引言

在SQL查询中,我们经常需要根据不同的条件来返回不同的结果。SQL提供了CASE WHEN语句来实现多条件嵌套判断。本文将详细介绍CASE WHEN语句的用法和示例代码。

2. 基本语法

CASE WHEN语句可以根据一个或多个条件来返回不同的结果。它的基本语法如下所示:

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

其中,condition1condition2等为条件表达式,result1result2等为满足条件时返回的结果。ELSE后面的result为当没有条件满足时返回的默认结果。

3. 单条件判断

首先,让我们看一个简单的示例来演示单条件判断的用法。假设我们有一个表students,其中包含了学生的姓名和考试分数。我们想根据学生的分数判断他们的考试成绩等级,可以使用CASE WHEN语句来实现。

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

上述SQL语句会返回一个包含学生姓名、分数和成绩等级的结果集。例如,假设学生表中有以下数据:

name score
张三 78
李四 85
王五 92
赵六 60

则以上SQL语句的执行结果如下:

name score grade
张三 78 中等
李四 85 良好
王五 92 优秀
赵六 60 及格

通过CASE WHEN语句,我们可以根据学生的分数判断他们的考试成绩等级,并将结果作为一个新的列进行显示。

4. 多条件嵌套判断

CASE WHEN语句还支持多条件嵌套判断。这意味着我们可以根据多个条件的组合来返回不同的结果。下面是一个示例代码,它根据学生的分数和缺勤次数来判断他们的考勤情况。

SELECT name, score, absence,
    CASE
        WHEN score >= 90 AND absence = 0 THEN '优秀'
        WHEN score >= 80 AND absence <= 2 THEN '良好'
        WHEN score >= 70 AND absence <= 4 THEN '中等'
        WHEN score >= 60 AND absence <= 6 THEN '及格'
        ELSE '不及格'
    END AS attendance
FROM students;

假设学生表中的数据如下所示:

name score absence
张三 78 1
李四 85 3
王五 92 0
赵六 60 5

执行以上SQL语句后,结果如下:

name score absence attendance
张三 78 1 良好
李四 85 3 中等
王五 92 0 优秀
赵六 60 5 不及格

通过多条件嵌套判断,我们可以根据学生的分数和缺勤次数来判断他们的考勤情况,并将结果作为一个新的列进行显示。

5. 结束语

本文详细介绍了SQL中CASE WHEN语句的用法和示例代码。通过CASE WHEN语句,我们可以根据一个或多个条件来返回不同的结果。这使得查询结果更加灵活和可读性更强。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程