MySQL中Case When用法及说明

MySQL中的CASE WHEN语句是一种非常有用的控制流语句,它允许我们根据条件表达式的结果来执行不同的操作。在本文中,我将详细讲解CASE WHEN的用法及说明。

基本语法

CASE WHEN语句的一般格式如下:

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

其中,condition1conditionN是一系列条件表达式,如果第一个条件表达式为true,则result1将被执行;如果第二个条件表达式为true,则result2将被执行;以此类推。如果没有任何条件表达式为true,则else子句中的result将被执行。

示例一

下面是一个例子,它演示了如何使用CASE WHEN语句来将冷饮的价格乘以不同的倍数,具体倍数由购买数量决定:

SELECT product_name, unit_price,
       CASE WHEN quantity < 6 THEN unit_price * 1.2
            WHEN quantity >= 6 AND quantity <= 12 THEN unit_price * 1.1
            ELSE unit_price * 1.05
       END AS adjusted_price
FROM products
WHERE category = 'cold drinks';

在此示例中,我们假设购买量小于6的冷饮价格会涨价20%,购买量在6到12之间的冷饮价格会涨价10%,购买量大于12的冷饮价格会涨价5%。

示例二

下面是另一个例子,它演示了如何使用CASE WHEN语句来计算学生的总成绩以及等级:

SELECT student_name, english, math, science,
       english + math + science AS total_score,
       CASE WHEN english + math + science >= 240 THEN 'A'
            WHEN english + math + science >= 180 AND english + math + science < 240 THEN 'B'
            WHEN english + math + science >= 120 AND english + math + science < 180 THEN 'C'
            ELSE 'D'
       END AS grade
FROM student_scores;

在此示例中,我们假设总分达到240及以上的学生能够获得A级成绩,总分达到180到239之间的学生获得B级成绩,总分达到120到179之间的学生获得C级成绩,其他学生获得D级成绩。

总结

CASE WHEN语句是一种强大的控制流语句,它可以在SQL查询中执行不同的操作。需要注意的是,在使用CASE WHEN语句时,一定要注意条件表达式和结果之间的映射关系。在实际使用中,我们需要根据具体情况来灵活运用CASE WHEN语句,以达到我们的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL中Case When用法及说明 - Python技术站

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

相关文章

  • 50条SQL查询技巧、查询语句示例

    50条SQL查询技巧、查询语句示例 本文将为大家介绍50条常用的SQL查询技巧,包括查询语句的写法和示例说明。 1.基本查询语句 查询语句是SQL的基础,以下是最基本的查询语句。 SELECT 列名 FROM 表名 其中 SELECT 关键字用于指定要查询的列名,FROM 关键字用于指定要查询的表名。例如,从 employees 表中查询所有员工的姓名和工号…

    database 2023年5月22日
    00
  • MySQL按年/月/周/日/小时分组查询、排序、limit及判空用法实例

    MySQL按年/月/周/日/小时 分组查询、排序、limit及判空用法实例 MySQL分组查询、排序、limit及判空用法是进行高效数据查询的重要技巧。本文将分享如何使用MySQL按年/月/周/日/小时进行分组查询,并进行排序、limit及判空操作的完整攻略。 MySQL分组查询 MySQL的分组查询可以根据某个字段对查询结果进行分组,然后在每个分组内进行统…

    database 2023年5月22日
    00
  • IBM DB2 和 PostgreSQL 的区别

    IBM DB2和PostgreSQL是两种非常受欢迎的关系型数据库管理系统。虽然它们都是关系型数据库管理系统,但它们之间有很多区别,包括社区支持、性能、可扩展性、安全性、功能和成本等方面。下面是一个详细的比较和说明: 社区支持 IBM DB2是由IBM开发和维护的商业数据库管理系统。它拥有一个庞大的客户群,并在大型企业和机构中广泛使用。然而,DB2的社区支持…

    database 2023年3月27日
    00
  • SQL 计算当前记录和下一条记录之间的日期差

    要计算当前记录和下一条记录之间的日期差,可以使用 SQL 中的LAG 函数。LAG 函数可以用来访问当前行之前的数据行。具体步骤如下: 1.使用LAG 函数查询数据表中的相关列,例如日期和表格中的其他数据。 2.计算当前记录和下一条记录之间的日期差,可以使用DATEDIFF 函数,此函数可以计算两个日期之间的差异。 下面是两个SQL查询示例,用于计算当前记录…

    database 2023年3月27日
    00
  • SQL Server 服务由于登录失败而无法启动

    当 SQL Server 服务无法启动并提示“登录失败”时,通常是由于以下原因之一: SQL Server 服务的登录凭据无效或已更改; SQL Server 服务使用的账户没有足够的权限。 为了解决这个问题,我们可以按照以下步骤进行: 检查 SQL Server 服务登录凭据是否有效:打开服务管理器,找到 MSSQLSERVER 服务(或其他 SQL Se…

    database 2023年5月21日
    00
  • 通过Shell脚本批量创建服务器上的MySQL数据库账号

    下面是通过Shell脚本批量创建服务器上的MySQL数据库账号的完整攻略。 一、前提条件 在执行Shell脚本批量创建MySQL数据库账号之前,需要满足以下前提条件: 在服务器上安装MySQL数据库,并拥有root用户权限; 已经安装并配置好MySQL客户端程序(mysql和mysqladmin); 已经创建好目标数据库,并准备好数据库授权方式和授权对象。 …

    database 2023年5月22日
    00
  • mysql导入失败

    mysqldump导出数据库表的数据会加上一些SQL的注释,这些注释会在批量执行SQL语句中造成错误,需要提前删除。 sql开始部分: SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_…

    MySQL 2023年4月13日
    00
  • 图文并茂地讲解Mysql索引(index)

    下面我将为您详细讲解“图文并茂地讲解Mysql索引(index)”的完整攻略。 1. 什么是索引(index) 索引(index)是一种能够加快在数据库表中查找某列值的数据结构,它可以让数据库系统快速定位到包含查找值的行。在 MySQL 数据库中,主键(primary key index)就是一种特殊的索引。 2. 索引类型 MySQL 支持多种类型的索引,…

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