SQL Case条件判断语句
问题描述:在表中取到一些值做出判断,配合监控监测一些表中的数据。使用select case when if 来做条件查询判断
CASE 表达式遍历条件并在满足第一个条件时返回一个值(类似于 if-then-else 语句)。 因此,一旦条件为真,它将停止读取并返回结果。 如果没有条件为真,则返回 ELSE 子句中的值。
如果没有 ELSE 部分并且没有条件为真,则返回 NULL。
case when语法结构
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
表结构:
MariaDB [test]> desc backup_job_details;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| server_id | int(11) | YES | | NULL | |
| host_name | varchar(20) | YES | | NULL | |
| host_ip | varchar(50) | YES | | NULL | |
| backup_type | char(20) | YES | | NULL | |
| start_time | datetime | YES | | NULL | |
| end_time | datetime | YES | | NULL | |
| backup_process | char(20) | YES | | NULL | |
| backup_size | char(20) | YES | | NULL | |
| backup_dir | varchar(200) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
9 rows in set (0.002 sec)
数据:
MariaDB [test]> select * from backup_job_details;
+-----------+-----------------+---------------+-------------+---------------------+---------------------+----------------+-------------+-----------------------------------------------------------------------+
| server_id | host_name | host_ip | backup_type | start_time | end_time | backup_process | backup_size | backup_dir |
+-----------+-----------------+---------------+-------------+---------------------+---------------------+----------------+-------------+-----------------------------------------------------------------------+
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-01-29 12:10:01 | 2023-01-29 12:10:04 | success | 21M | /localbackup/backup_mariadb/Inc_Test-MySQL-DB03-2023-01-29_12-10.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | full | 2023-01-30 00:20:01 | 2023-01-30 00:20:03 | success | 41M | /localbackup/backup_mariadb/Full_Test-MySQL-DB03-2023-01-30_00-20.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-01-30 12:10:01 | 2023-01-30 12:10:04 | success | 21M | /localbackup/backup_mariadb/Inc_Test-MySQL-DB03-2023-01-30_12-10.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | full | 2023-01-31 00:20:01 | 2023-01-31 00:20:05 | success | 41M | /localbackup/backup_mariadb/Full_Test-MySQL-DB03-2023-01-31_00-20.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-01-31 12:10:01 | 2023-01-31 12:10:04 | success | 21M | /localbackup/backup_mariadb/Inc_Test-MySQL-DB03-2023-01-31_12-10.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | full | 2023-02-01 00:20:01 | 2023-02-01 00:20:03 | success | 41M | /localbackup/backup_mariadb/Full_Test-MySQL-DB03-2023-02-01_00-20.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-02-01 12:10:01 | 2023-02-01 12:10:04 | success | 21M | /localbackup/backup_mariadb/Inc_Test-MySQL-DB03-2023-02-01_12-10.zip |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-02-01 12:10:01 | 2023-02-01 12:10:04 | failed | 0M | |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-02-01 12:10:01 | 2023-02-01 12:10:04 | failed | 0M | |
| 54 | Test-MySQL-DB03 | 192.168.163.21 | inc | 2023-02-01 12:10:01 | 2023-02-01 12:10:04 | success | 10M
1.备份表,通过判断备份表中最后一次备份是否成功,或者失败。成功返回success,失败返回failed
select case when backup_process = 'success' then 'success' when backup_process != 'success' then 'failed' end as backup_process from test.backup_job_details order by server_id DESC limit 1;
如果最后一条数据的backup_process 字段数据为success,sql返回结果就是'success'
MariaDB [(none)]> select case when backup_process = 'success' then 'success' when backup_process != 'success' then 'failed' end as backup_process from test.backup_job_details order by server_id DESC limit 1;
+----------------+
| backup_process |
+----------------+
| success |
+----------------+
1 row in set (0.001 sec)
如果最后一条数据的backup_process 字段数据为其它,sql返回结果就是'failed'
MariaDB [(none)]> select case when backup_process = 'success' then 'success' when backup_process != 'success' then 'failed' end as backup_process from test.backup_job_details order by server_id DESC limit 1;
+----------------+
| backup_process |
+----------------+
| failed |
+----------------+
1 row in set (0.001 sec)
2.备份表,查询最后一条备份记录后的一段时间段内,有没有新的备份记录产生,如果没有,返回failed;如果备份记录正常产生,返回success。如果新的备份记录没有在规定时间内被记录,此时备份脚本状态可能有异常。
SELECT (CASE WHEN TIMESTAMPDIFF(HOUR,end_time, now()) > 14 THEN "failed" ELSE "success" END )AS TIME_DIFF FROM test.backup_job_details order by end_time DESC limit 1;
通过判断最后一条记录的备份时间跟now()此时的时间比较,判断下一次的记录有没有在规定的时间产生,以此来判断备份脚本的执行状态
MariaDB [(none)]> SELECT (CASE WHEN TIMESTAMPDIFF(HOUR,end_time, now()) > 14 THEN "failed" ELSE "success" END )AS TIME_DIFF FROM test.backup_job_details order by end_time DESC limit 1;
+-----------+
| TIME_DIFF |
+-----------+
| success |
+-----------+
1 row in set (0.001 sec)
SQL Case条件判断语句的更多相关文章
- SQL Case条件判断SQL
问题描述:在表中取到一些值做出判断,配合监控监测一些表中的数据.使用select case when if 来做条件查询判断 CASE 表达式遍历条件并在满足第一个条件时返回一个值(类似于 if-th ...
- 『忘了再学』Shell流程控制 — 33、if条件判断语句(一)
目录 1.单分支if条件语句 2.双分支if条件语句 (1)示例1 (2)示例2 什么是流程控制? 普通理解:Shell编写的程序是顺序执行的,也就是说第一命令先执行,然后接着执行第二条命令,然后再下 ...
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
题目描述: 求 1+2+...+n, 要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). 分析: 首先想到的是写递归函数,但是遇 ...
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- puppet(3) 变量、数据类型、表达式、条件判断语句-if、case、selector、unless
puppet(4) 变量.数据类型.表达式.条件判断语句-if.case.selector语句 puppet变量: 1.名称必须以$开头:赋值使用=,支持追加赋值+=: 2.每个变量都有两种引用格式: ...
- 剑指offer47:位运算+递归。求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
1 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 2 思路和方法 (1)递归,不能使用if等 ...
- 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...
- 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...
- MySQL的简单条件判断语句
在MySQL中条件判断语句常用于数据转换,基于现有数据创建新的数据列,使用场景还是比较多. 基础样式: CASE WHEN`条件`THEN`结果` ELSE`默认结果` END 在同一条判断语句中可以 ...
随机推荐
- curl 查看响应时间
curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntim ...
- Parallels Desktop 18(Mac虚拟机)v18.0.0(53049)无限试用版+win11系统
Parallels Desktop 18 for Mac 是一款强大的虚拟机软件,让您无需重启即可在 Mac 上运行 Windows 应用程序不会减慢 Mac 的运行速度,具有速度快.操作简单且功能强 ...
- php 解密 java des 密文
背景 对方系统java des 加密, 我们用 php 解密 模式基本介绍 ECB模式:电子密本方式,JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节 ...
- 2003031118—李伟—Python数据分析第四周作业—第二次作业
项目 matplotlib的使用 课程班级博客链接 班级博客 这个作业要求链接 作业要求 博客名称 2003031118-李伟-Python数据分析第四周作业-第二次作业 要求 每道题要有题目,代码( ...
- python 安装fbprophet模块的艰辛历程
fbprophet这个模块是我目前见过最难装的一个模块,我安装这个包安装了3天,气死我了,需求的依赖包太多,而且对依赖包的版本有极高的要求,所以建议在装这个模块的时候在一个空的虚拟环境下安装,这样依赖 ...
- aar 真机测试
工具 bundletool.jar 官方下载位置 https://github.com/google/bundletool/releases 下载后改下名字方便输入命令 将aar 放在G盘根目录 ja ...
- QT数据结构内存分配策略
在QT的Reference中无意看到了QString及其他类型数据结构内存的分配策略,翻译并记录一下. 在QString的数据结构中,QString通过一次附加一个字符来动态构建字符串.假设我们向QS ...
- 异常:Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.3.2.RELEASE:repackage (repackage) 解决办法
异常:Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.3.2.RELEASE:repackage ...
- TCP idle timeout 和TCP Keepalive 比较和分析
TCP idle timeout 和TCP Keepalive 是两个独立的功能. TCP idle timeout TCP idle timeout 是系统TCP配置文件中的空闲超时设 ...
- 201971010110-高杨 实验三 结对项目—《{0-1}KP 实例数据集算法实验平台》项目报告
项目内容 项目 内容 班级博客链接 https://edu.cnblogs.com/campus/xbsf/2019nwnucs 作业要求 https://edu.cnblogs.com/campus ...