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日

相关文章

  • docker 运行 redis 并指定配置文件

      1、上传配置文件到服务器。目录如下 2、 swt@ubuntu-swt:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3、运行容器 sudo docker run -d -v /home/swt/redis/:/data -p 6379:6379 redis…

    Redis 2023年4月13日
    00
  • MySQL 出现 The table is full 的解决方法【转】

    时间 2014-08-21 12:18:56  MySQL中文网 原文  http://imysql.com/2014/08/21/mysql-faq-howto-deal-with-table-full.shtml 主题 MySQL 当我们要写入新数据而发生“The table is full”告警错误时,先不要着急,按照下面的思路来逐步分析即可: 1、查…

    MySQL 2023年4月13日
    00
  • DBMS中分类和聚类的区别

    DBMS中分类(classification)和聚类(clustering)是两个非常常见的数据挖掘(data mining)技术,主要应用于无监督学习(unsupervised learning)场景中。虽然这两者在表面上看起来非常相似,但它们在实现方法和应用场景上存在一些区别。 分类(classification) 分类是一种基于预先定义好的类别(cat…

    database 2023年3月27日
    00
  • 安装Mysql时可能会遇到的一些疑难杂症

    安装Mysql时可能会遇到的一些疑难杂症主要涉及安装环境、安装选项、权限设置等问题。下面将结合两条示例,详细讲解如何解决这些问题以成功安装Mysql。 示例一:安装Mysql时出现“ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES) ”的错误 …

    database 2023年5月18日
    00
  • Redis的序列化和反序列化

    对象序列化:将对象的状态信息持久保存的过程。 注意:序列化的类型,必须实现Serializable接口 对象反序列化:根据对象的状态信息恢复对象的过程。 在Redis中有2种常用的方式:字节数组和json串**** 1.字节数组添加依赖 <!– https://mvnrepository.com/artifact/org.apache.commons…

    Redis 2023年4月12日
    00
  • Openstack 使用migrate进行数据库升级实现方案详细介绍

    Openstack 使用migrate进行数据库升级实现方案详细介绍 简介 Openstack是一个开放源代码的云计算软件平台,其中涉及到的各种组件和服务都需要对应的数据存储支持。在不同的版本之间,组件的数据存储模式可能发生变化,此时就需要进行数据库升级。其中,常用的数据库升级工具之一就是migrate。 本文将详细介绍Openstack使用migrate进…

    database 2023年5月22日
    00
  • Linux中设置Redis开机启动的方法

    下面我将为您详细讲解“Linux中设置Redis开机启动的方法”的完整攻略,以下是具体步骤: 1. 编写Redis启动脚本 在/etc/init.d/目录下新建一个名为redis的文件,这个文件就是我们的启动脚本,使用以下命令: sudo vim /etc/init.d/redis 然后把以下代码粘贴进去: #!/bin/sh # chkconfig: 23…

    database 2023年5月22日
    00
  • SQL Select语句完整的执行顺序

    SQL的Select语句是非常常用的查询语句。但是,当涉及到复杂的查询时,了解Select语句的完整的执行顺序是非常必要的。下面是SQL Select语句完整的执行顺序的攻略。 Select语句的执行顺序 SQL Select语句执行的顺序正式如下: FROM:查询的目标表。 JOIN:通过连接操作关联其他表。 WHERE:对目标表的数据进行筛选。 GROU…

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