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日

相关文章

  • oracle 树查询 语句

    Oracle 树查询语句通常用于查询树形结构的数据。它们允许你从一张表中提取树形结构数据,甚至包括所有的父子关系和层级关系。下面是在 Oracle 数据库中使用树查询语句的完整攻略: 一、创建树形结构表 在任何数据库中,创建树形结构表的方法都类似。我们需要包含一个主键ID和一个父节点的ID列,还要包含一个约束,以确保每个节点都有一个父节点,除了根节点。 CR…

    database 2023年5月21日
    00
  • SQL SERVER 自增列

    SQL SERVER自增列攻略 什么是自增列 在 SQL SERVER 中,自增列是指一列数值,每当在该列中插入一条数据时,该列的值会自动加 1。自增列可以是任何数值类型,比如 INT 或 BIGINT。 如何创建自增列 创建自增列的语法如下: CREATE TABLE 表名( 列1 的数据类型 列1名, 列2 的数据类型 列2名, 自增列的数据类型 IDE…

    database 2023年5月21日
    00
  • SQL – 约束

    SQL约束是一组规则,用于保证数据库表中数据的正确性和一致性。在创建表时,可以通过使用约束规定数据的格式、类型、完整性以及一些限制条件。本文将详细讲解SQL-约束,包括其类型、如何使用约束以及一些实例。 类型 SQL约束主要可以分为以下五种类型: NOT NULL NOT NULL约束规定表中的字段值不能为空。如果尝试插入或更新时将NULL值插入此字段,将会…

    database 2023年3月27日
    00
  • MySQL之数据表的插入内容 空与非空(六)

    NULL与NOT NULL mysql> CREATE TABLE tb2( -> usename VARCHAR(20) NOT NULL, -> age TINYINT UNSIGNED NULL(可以为空) -> );Query OK, 0 rows affected (0.06 sec) mysql> SHOW COLU…

    MySQL 2023年4月16日
    00
  • 讲解Oracle数据库中的数据字典及相关SQL查询用法

    讲解Oracle数据库中的数据字典及相关SQL查询用法需要分几个方面来讲: 一、数据字典简介 在Oracle数据库中,数据字典是一个数据储存区,它记录了关于数据库逻辑和物理方面的重要信息,如表名、列名、数据类型、索引、用户信息等等。它是一组包含系统元数据和描述数据库特定信息的表和视图的总称。这些元数据是由Oracle存储在系统表、数据字典视图、表表存储过程以…

    database 2023年5月21日
    00
  • SQL中 decode()函数简介

    介绍 decode() 是SQL中非常强大的条件表达式函数之一。它被广泛用于在查询中测试和显示一个字段的不同值。decode()函数本质上是一个语言结构,它接受若干个条件和结果,对于输入数据的每一个值,按照顺序依次判断是否满足条件,如果满足,则返回对应的结果。 语法 decode() 函数的语法如下: decode( expression ,search ,…

    database 2023年5月21日
    00
  • centos下root运行Elasticsearch异常问题解决

    下面我将详细讲解如何解决centos下root运行Elasticsearch异常问题。 问题描述 在CentOS系统下以root账户运行Elasticsearch时,可能会遇到异常问题。 问题解决 解决此问题的方法如下: 1. 不要以root账户运行Elasticsearch 在CentOS系统下,不建议直接以root账户运行Elasticsearch。可以…

    database 2023年5月21日
    00
  • MySQL数据库存储过程和事务的区别讲解

    MySQL数据库存储过程和事务都是MySQL数据库的重要特性,但它们所起到的作用有所不同,下面详细讲解它们的区别。 一、MySQL存储过程 MySQL存储过程是指一组SQL语句的集合,这组SQL语句可以被存储在数据库中,并用一个名称来标识它。存储过程可用于简化复杂的SQL查询、优化性能、实现业务逻辑等。 1.1 存储过程的语法结构 MySQL存储过程的语法结…

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