一篇文章带你了解SQL之CASE WHEN用法详解

yizhihongxing

一篇文章带你了解 SQL 之 CASE WHEN 用法详解

CASE WHEN 简介

在 SQL 中,CASE WHEN 语句用于根据指定的条件执行不同的操作。它类似于程序中的 if-else 语句,对于不同的条件分别执行不同操作。

CASE WHEN 语句包括以下几个部分:

CASE
    WHEN condition_1 THEN result_1
    WHEN condition_2 THEN result_2
    ELSE default_result
END

其中 condition_1, condition_2 为不同的条件,可以是列名或者表达式;result_1, result_2 为不同条件满足时的返回结果;default_result 为所有条件均不满足时的默认返回结果。

CASE WHEN 示例

以下是两个使用 CASE WHEN 的示例。

示例一

假设我们有一个学生成绩表,其中包含学生的姓名、数学成绩和语文成绩。我们希望根据这些成绩计算每个学生的总分,并根据总分的不同等级分类。具体来说,总分在 90 分以上为 A 级,80 分以上为 B 级,70 分以上为 C 级,60 分以上为 D 级,60 分以下为不及格。

以下是 SQL 查询语句:

SELECT
    name,
    math,
    chinese,
    math + chinese AS total_score,
    CASE
        WHEN math + chinese >= 90 THEN 'A'
        WHEN math + chinese >= 80 THEN 'B'
        WHEN math + chinese >= 70 THEN 'C'
        WHEN math + chinese >= 60 THEN 'D'
        ELSE '不及格'
    END AS level
FROM
    score_table;

这里使用了 CASE WHEN 语句来计算每个学生的总分和等级。math + chinese 表示该学生的总分,根据不同的总分区间返回不同的等级。

示例二

假设我们有一个订单表,其中包含订单编号、下单时间和订单状态。对于已取消的订单,我们希望在查询结果中显示为“已取消”,对于未取消的订单,我们希望显示为“未取消”。

以下是 SQL 查询语句:

SELECT
    order_id,
    order_time,
    CASE
        WHEN order_status = '已取消' THEN '已取消'
        ELSE '未取消'
    END AS status
FROM
    order_table;

这里使用了 CASE WHEN 语句来判断订单是否已取消。order_status = '已取消' 表示订单状态为“已取消”,返回“已取消”,否则返回“未取消”。

总结

通过以上两个示例,我们可以看出 CASE WHEN 语句对于根据不同条件返回不同结果非常方便。CASE WHEN 语句在复杂的查询语句中也非常常见,可以帮助我们快速清晰地编写 SQL 语句。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解SQL之CASE WHEN用法详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL如何恢复单库或单表,以及可能遇到的坑

    MySQL数据库恢复是数据库管理员非常常见的操作,常见的情况包括误删除、服务器故障等。在这种情况下,我们需要恢复数据库中的数据。本篇攻略将详细讲解MySQL如何恢复单库或单表,以及可能遇到的一些坑。 1. 恢复单库 在恢复单库之前,我们需要先停止MySQL服务,以确保数据不会被覆盖或丢失。以下是恢复单库的步骤: 备份当前的数据库文件 在进行数据恢复前,我们需…

    database 2023年5月22日
    00
  • win2003安装sqlserver 2000提示无法验证产品密钥的解决方法

    问题描述: 在安装SQL Server 2000时,出现提示:无法验证产品密钥,导致无法继续安装。 解决方法: 步骤一:编辑注册表 在开始菜单中,选择“运行”,输入“regedit”打开注册表编辑器。 在左侧的窗格中,依次展开以下路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\80…

    database 2023年5月21日
    00
  • 探讨:MySQL中如何查询当前正在运行的SQL语句

    MySQL中查询当前正在运行的SQL语句的方法是通过查看系统表来实现的。可以使用以下步骤进行查询: 步骤1:连接到MySQL服务器 使用以下命令以管理员身份连接到MySQL服务器: mysql -u root -p 输入你的密码以获得管理员权限。 步骤2:选择数据表 进入MySQL数据库,并使用以下命令来选择包含正在运行SQL语句的系统表: USE info…

    database 2023年5月22日
    00
  • SpringBoot使用Redis缓存MySql的方法步骤

    当我们在使用Spring Boot开发Web应用时,通常会遇到需要缓存数据库查询结果的场景。在这种情况下,我们可以采用Redis作为缓存工具,以实现快速缓存和查询结果。下面是Spring Boot使用Redis缓存MySql的方法步骤的完整攻略: 1. 导入Redis和MySQL相关依赖 在Spring Boot项目中首先需要将Redis和MySQL相关依赖…

    database 2023年5月21日
    00
  • DBMS中BCNF和4NF的区别

    BCNF和4NF是数据库设计中的两个重要的范式,它们都是通常用来规范化表结构以避免冗余和数据异常发生的工具。但是,BCNF和4NF的优先级不同,使用场景也不同。 一、BCNF BCNF(Boyce-Codd范式)是数据库设计中的一种规范化范式,在满足3NF(第三范式)的基础上,再进一步规范化数据表。BCNF是非正规化问题的一种解决方案。 在满足3NF的基础上…

    database 2023年3月27日
    00
  • Oracle中NEXTVAL案例详解

    Oracle中NEXTVAL案例详解 在使用Oracle数据库时,我们经常会使用到序列(Sequence)这个概念。在使用序列时,会涉及到 Sequence Object 的一些基本操作,其中之一就是 NEXTVAL 操作。在这篇文章中,我们将详细讲解“Oracle中NEXTVAL案例”,帮助读者更好地理解它的基本用法。 什么是 NEXTVAL 在讲解 NE…

    database 2023年5月21日
    00
  • MYSQL 运算符总结

    MYSQL 运算符总结 MySQL 运算符主要包括算术运算符、比较运算符、逻辑运算符等。 算术运算符 算术运算符用于基本的数学运算,包括加、减、乘、除、求余等操作。其中,取余操作可以用于判断一个数是否是偶数或奇数等应用场景。 示例 SELECT 5 + 3; — 输出 8 SELECT 10 – 2; — 输出 8 SELECT 6 * 4; — 输出…

    database 2023年5月22日
    00
  • mysql创建表的sql语句详细总结

    当我们使用MySQL时,创建数据库表是一个必要的操作。以下是步骤和示例SQL语句,可以帮助你开始创建自己的MySQL表。 步骤1:确定表的结构 在创建表之前,我们需要决定表的结构,包括要使用多少列和哪些列名称和类型。 步骤2:选择创建表的方法 在MySQL中,有多种方法可以创建表。以下是其中的两个示例: 方法1:使用Create Table语句创建表 下面是…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部