广告
返回顶部
首页 > 资讯 > 数据库 >MySQL基础入门之Case语句用法实例
  • 471
分享到

MySQL基础入门之Case语句用法实例

mysql case语句sql语句case用法mysql中的case 2022-08-08 12:08:52 471人浏览 安东尼
摘要

目录引言CASE 的语法CASE 语句在 Mysql 中是如何工作的?带有 SELECT 和 ORDER BY 子句的 CASE 语句具有聚合函数的 CASE 语句补充:case行转列用法总结引言 mysql C

引言

mysql CASE 是一个 Mysql 语句查询关键字,它定义了处理循环概念以执行条件集并使用 IF ELSE 返回匹配案例的方式。 MySQL 中的 CASE 是一种控制语句,它验证条件案例集,并在第一个案例满足 else 值时显示值并退出循环。

如果没有找到 TRUE 且语句没有 ELSE 部分或值,则 CASE 返回 NULL。基本上,CASE 语句类似于 IF THEN ELSE 逻辑循环语句。在 MySQL 服务器上运行时,它会读取条件表达式,当表达式大小写匹配时,nit 会显示结果。之后,它会进一步停止执行。

CASE 的语法

下面的语法定义了 CASE 语句 SQL 查询结构:

CASE
WHEN cond1 THEN value1
WHEN cond2 THEN value2
WHEN condN THEN valueN
ELSE value
END;
  • Cond1,cond2,…..,condN:表示在 CASE 语句列表中需要评估的条件。
  • Value1, value2, .....,valueN:表示满足条件时需要显示的各个值。
  • Value:表示 else 部分满足时显示的值。

这部分允许在 MySQL 的查询中添加逻辑 CASE 语句。为了生成有效的语句,我们在任何地方使用带有 WHERE SELECT 和 ORDER BY 等子句的 CASE 语句。您可以通过如下所示的语法进行评估:

SELECT column1,column2,
CASE
WHEN cond1 THEN value1
WHEN cond2 THEN value2
WHEN condN THEN valueN
ELSE value
END
FROM TableName;

CASE 语句在 MySQL 中是如何工作的?

CASE 语句包含两个过程:一个是 Simple CASE,另一个是 Searched CASE。我们使用 CASE 语句根据匹配条件提供结果值,使用逻辑控制方法与 SQL 子句(如 SELECT、WHERE 和 ORDER BY)一起为 SQL 查询提供结果值。

假设,下面的查询解释了 CASE 逻辑部分,其中我们提到了一个像 Student 的表,其中包含字段 StudentName、State、City,那么查询将被写为:

SELECT StudentName, State, City FROM Students ORDER BY (
CASE
WHEN State IS NULL THEN City
ELSE State
END);

从这里我们将知道,当我们在 SELECT 查询中应用 CASE 语句来获取满足特定 case 条件的特定值时。在上图中,我们将 CASE 语句放在 State 和 City 列上,如果 State 列包含 NULL 值,则查询显示 City 列值,如果 case 语句无效或找不到值,则显示部分值,即 State返回列值。在这里,我们使用 ORDER BY 子句获取了应用 CASE 的学生、州和城市的名称,以对结果行进行排序

在 Simple CASE 中,CASE 的列值与 WHEN 子句中的条件语句值匹配以实现等价性,然后在语法中的一个之后生成结果值。但如果没有相等的值,则返回 ELSE 部分值(如果提供)。

您不应在 WHEN 子句值中使用 NULL,因为如果执行,逻辑部分将为 NULL = NULL,结果为 FALSE。

现在对于 Search CASE,它遵循与 Simple CASE 相同的逻辑过程,但搜索案例的一部分使其执行起来有所不同。在这里,满足 MySQL 数据类型的值的 CASE 是基于它用于的上下文。例如,如果语句中使用了字符串上下文,则结果值将采用相同的数据类型,字符串。此外,如果 CASE 条件表达式使用数字上下文,则返回的值将是整数、小数或实数值数据类型。

带有 SELECT 和 ORDER BY 子句的 CASE 语句

创建数据库

CREATE TABLE Students(StudentID int, StudentName varchar(255), State varchar(255), City varchar(255));

MySQL基础入门之Case语句用法实例

数据库插入新值

INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('01', 'Wade', 'UK', 'London');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('02', 'Vivi', 'US', 'NewYork');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('03', 'Kyrie', 'CN', 'SH');
INSERT INTO Students (StudentID, StudentName, State, City) VALUES ('04', 'James', '', 'Cleveland ');

MySQL基础入门之Case语句用法实例

查询数据

SELECT * FROM Students;

MySQL基础入门之Case语句用法实例

带有 SELECT 查询的 CASE 语句

SELECT StudentName, State, City FROM Students ORDER BY (
CASE
WHEN State IS NULL THEN City
ELSE State
END);

MySQL基础入门之Case语句用法实例

具有聚合函数的 CASE 语句

我们将使用 CASE 语句和 SUM() MySQL 函数按订单状态从 Orders 表中计算总销售额。

创建数据库表

CREATE TABLE Orders (OrderID int,SalesID int, OrderStatus varchar(255) );

MySQL基础入门之Case语句用法实例

插入数据

INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('10', '001', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('11', '002', 'Shipped');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('12', '003', 'Not Developed');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('13', '004', 'Success');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('14', '005', 'In Process');
INSERT INTO Orders (OrderID, SalesID,OrderStatus) VALUES ('15', '006', 'Cancelled');

SELECT 语句显示表数据

SELECT * FROM Orders;

得到的数据如下:

10    1    Shipped
11    2    Shipped
12    3    Not Developed
13    4    Success
14    5    In Process
15    6    Cancelled

MySQL基础入门之Case语句用法实例

在 SQL SELECT 查询中使用 SUM() 和 COUNT 作为聚合函数的 CASE 语句

SELECT
SUM(CASE
WHEN OrderStatus = 'Success' THEN 1
ELSE 0
END) AS 'Success Count',
SUM(CASE
WHEN OrderStatus = 'On Hold' THEN 1
ELSE 0
END) AS 'Hold Count',
SUM(CASE
WHEN OrderStatus = 'In Process' THEN 1
ELSE 0
END) AS 'Processing',
SUM(CASE
WHEN OrderStatus = 'Shipped' THEN 1
ELSE 0
END) AS 'Shipping count',
SUM(CASE
WHEN OrderStatus = 'Cancelled' THEN 1
ELSE 0
END) AS 'Cancellation Count',
SUM(CASE
WHEN OrderStatus = 'Not Developed' THEN 1
ELSE 0
END) AS 'Not Developed count',
COUNT(*) AS 'Sum Total'
FROM
Orders;

运行结果:

MySQL基础入门之Case语句用法实例

补充:case行转列用法

现有表数据如下图所示(性别列中,1表示男,2表示女):

MySQL基础入门之Case语句用法实例

需统计各年级男女人数。虽然表中数据已有各年级的男女人数,但是还是不够一目了然。接下来使用case语句查询如下:

SELECT
    class,
    sum( CASE WHEN sex = '1' THEN population ELSE 0 END ) AS cnt_m,
    sum( CASE WHEN sex = '2' THEN population ELSE 0 END ) AS cnt_f 
FROM
    `school_test` 
GROUP BY
    class;

结果如下:

MySQL基础入门之Case语句用法实例

这是最经典的case行转列用法。

总结

MySQL CASE 语句允许对 SQL 查询执行 IF ELSE 逻辑,以检查条件语句并从数据库表中获取所需的结果集或值。

我们只能将 CASE 语句与存储过程、存储事件、函数和触发器一起使用。它用于将条件表达式与一系列不同的值进行比较,这些值提供了相应的结果,该结果包含取决于查询中使用的上下文的数据类型。

因此,我们可以说 MySQL 中的 CASE 语句使查询代码更加高效和可读。

到此这篇关于MySQL基础入门之Case语句用法的文章就介绍到这了,更多相关MySQL Case语句用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

参看文章:

MySQL CASE Statement

您可能感兴趣的文档:

--结束END--

本文标题: MySQL基础入门之Case语句用法实例

本文链接: https://www.lsjlt.com/news/33525.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL基础入门之Case语句用法实例
    目录引言CASE 的语法CASE 语句在 mysql 中是如何工作的?带有 SELECT 和 ORDER BY 子句的 CASE 语句具有聚合函数的 CASE 语句补充:case行转列用法总结引言 MySQL C...
    99+
    2022-08-08
    mysql case语句 sql语句case用法 mysql中的case
  • Mysql基础入门-SQL_DDL语句
    一、mysql数据库介绍:    mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表。保持数据的一致性是关系型...
    99+
    2022-10-18
  • python入门语句基础之if语句、while语句
    目录一、if语句二、while语句一、if语句 if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值的元素...
    99+
    2022-11-10
  • MySQL 入门:Case 语句很好用
    引言 MySQL CASE 是一个 MySQL 语句查询关键字,它定义了处理循环概念以执行条件集并使用 IF ELSE 返回匹配案例的方式。 MySQL 中的 CASE 是一种控制语句,它验证条件案例集,并在第一个案例满足 else 值时显...
    99+
    2023-09-01
    mysql 数据库 sql
  • Python基础入门之if判断语句
    目录1.if 判断语句的基本语法2.比较(即关系)运算符 3.逻辑运算符 4.if - else 5.if 语句进阶——elif6.if的嵌套总结1.if 判断语句的基本语法 &n...
    99+
    2022-11-12
  • Python入门之基础语法的示例分析
    这篇文章将为大家详细讲解有关Python入门之基础语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.p...
    99+
    2023-06-15
  • Python入门之基础语法详解
    目录一、我的经历及目标二、Python简介三、Python基础语法3.1行和缩进3.2Python注释3.3Python空行3.4同一行显示多条语句3.5print输出3.6多个语句...
    99+
    2022-11-12
  • python开发之thread线程基础实例入门
    本文实例讲述了python开发之thread线程基础。分享给大家供大家参考,具体如下: 说到线程,我们要知道啥是串行,啥是并行程序 举个例子: 串行程序,就是一个一个的执行程序 #python thre...
    99+
    2022-06-04
    线程 实例 入门
  • 【Python入门篇】——Python中循环语句(for循环的基础语法)
    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选...
    99+
    2023-09-01
    python 开发语言 numpy
  • JavaScript基础之语法实例分析
    这篇文章主要介绍“JavaScript基础之语法实例分析”,在日常操作中,相信很多人在JavaScript基础之语法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2022-10-19
  • C语言入门基础之操作符的示例分析
    这篇文章给大家分享的是有关C语言入门基础之操作符的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。操作符首先第一部分操作符分类如上,具体不再用文字阐述。算术操作符首先算术操作符,有除号值得一讲,若想得浮点数...
    99+
    2023-06-20
  • MySQL基础教程14 —— SQL语法之数据定义语句DDL
    1. ALTER DATABASE语法 ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] ... ...
    99+
    2022-05-17
    DDL MySQL SQL 数据库
  • MySQL基础教程15 —— SQL语法之数据操作语句DML——DELETE语法
    单表语法: DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name     [WHERE where_definition]     [OR...
    99+
    2022-05-18
    delete DML MySQL SQL 数据库
  • shell脚本编程中case语句的实例用法
    本篇内容介绍了“shell脚本编程中case语句的实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!case语句是用来实现多个if..e...
    99+
    2023-06-09
  • MySQL数据库基础入门之常用命令小结
    本文实例讲述了MySQL数据库基础入门之常用命令。分享给大家供大家参考,具体如下: 接上一篇:MySQL数据库主从同步实战过程 mysql命令介绍 mysql 是数据库管理命令 通过mysql --help来查看相关...
    99+
    2022-05-18
    MySQL 数据库 常用命令
  • 理解case when then else end 的使用,基础概念,建表语句,用例讲解
    文章目录 一、基础概念二、建表语句三、用例讲解参考文档 一、基础概念 case :表示需要处理的字段when :表示条件then :表示当when执行为true时,再执行的语句else :...
    99+
    2023-09-01
    数据库 java sql
  • python基础语法之函数应用实例分析
    这篇“python基础语法之函数应用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python基础语法之函数应用实例...
    99+
    2023-06-30
  • Go语言基础switch条件语句基本用法及示例详解
    目录概述语法第一种【switch 带上表达式】第二种【switch 不带表达式】第三种【switch 初始化,表达式】注意示例一【根据今天的日期打印今天星期几】示例二【根据分数打印A...
    99+
    2022-11-12
  • ES6基础语法之数组的使用实例分析
    这篇文章主要介绍了ES6基础语法之数组的使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之数组的使用实例分析文章都会有所收获,下面我们一起来看看吧。一、Array.of()将参数中所有值...
    99+
    2023-06-30
  • Go语言基础if条件语句用法及示例详解
    目录概述语法格式规则 概述 条件语句需要开发者通过指定一个或多个条件 并通过测试条件是否为 true 来决定是否执行指定语句 并在条件为 false 的情况再执行另外的语句。 语法 ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作