iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 入门:Case 语句很好用
  • 144
分享到

MySQL 入门:Case 语句很好用

mysql数据库sql 2023-09-01 22:09:06 144人浏览 薄情痞子
摘要

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

引言

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

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

CASE 的语法

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

CASEWHEN cond1 THEN value1WHEN cond2 THEN value2WHEN condN THEN valueNELSE valueEND;
  • Cond1,cond2,…..,condN:表示在 CASE 语句列表中需要评估的条件。

  • Value1, value2, .....,valueN:表示满足条件时需要显示的各个值。

  • Value:表示 else 部分满足时显示的值。

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

SELECT column1,column2,CASEWHEN cond1 THEN value1WHEN cond2 THEN value2WHEN condN THEN valueNELSE valueENDFROM 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 (CASEWHEN State IS NULL THEN CityELSE StateEND);

从这里我们将知道,当我们在 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 语句

  1. 创建数据库

CREATE TABLE Students(StudentID int, StudentName varchar(255), State varchar(255), City varchar(255));
  1. 数据库插入新值

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 ');

  1. 查询数据

SELECT * FROM Students;
  1. 带有 SELECT 查询的 CASE 语句

SELECT StudentName, State, City FROM Students ORDER BY (CASEWHEN State IS NULL THEN CityELSE StateEND);

具有聚合函数的 CASE 语句

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

  1. 创建数据库表

CREATE TABLE Orders (OrderID int,SalesID int, OrderStatus varchar(255) );
  1. 插入数据

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');
  1. SELECT 语句显示表数据

SELECT * FROM Orders;

得到的数据如下:

101Shipped112Shipped123Not Developed134Success145In Process156Cancelled
  1. 在 SQL SELECT 查询中使用 SUM() 和 COUNT 作为聚合函数的 CASE 语句

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

运行结果:

总结

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

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

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

参看文章:

来源地址:https://blog.csdn.net/yuzhou_1shu/article/details/124721675

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 入门:Case 语句很好用

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

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

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

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

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作