MySQL的条件判断函数
目录
- 1. 建表 `SQL` 如下
- 2. `CASE WHEN` 条件判断
- 2.1. 简单函数
- 2.2. 条件表达式
- 2.3. 结合使用
- 3. `IF` 条件判断
- 4. `IF NULL` 条件判断
- 4.1. `IF NULL` 函数结合聚合函数使用
1. 建表 SQL
如下
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`sex` tinyint(255) NOT NULL,`age` int(11) NOT NULL,`score` bigint(255) NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (1, '龙傲天', 1, 16, 90);
INSERT INTO `score` VALUES (2, '赵日天', 1, 14, 58);
INSERT INTO `score` VALUES (3, '叶良辰', 1, 17, 54);
INSERT INTO `score` VALUES (4, '武媚娘', 0, 22, 72);
INSERT INTO `score` VALUES (5, '甄姬', 0, 36, 78);
INSERT INTO `score` VALUES (6, '徐胜虎', 1, 20, 98);SET FOREIGN_KEY_CHECKS = 1;
2. CASE WHEN
条件判断
CASE WHEN
语句能在 SQL
语句中织入判断逻辑, 类似于 Java
中的 if else
语句。它分为简单函数和条件表达式
2.1. 简单函数
-- 如果字段值等于预期值,则返回结果 1,否则返回结果 2
CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 END
下面通过一个简单的示例来看一下具体用法,表 score
需求说明:在 score
表中,sex = 1
表示男性,sex = 0
表示女性,查询时转换成汉字显示
SELECT `name`,( CASE sex WHEN 0 THEN '女' ELSE '男' END ) AS sex
FROMscore
结果如下
2.2. 条件表达式
-- 如果该判断结果为 true,那么 CASE 语句将返回 '结果1',否则返回 '结果2',如果没有 ELSE,则返回 null
-- CASE 与 END 之间可以有多个 WHEN… THEN… ELSE 语句。END 表示 CASE 语句结束
CASE WHEN 条件判断 THEN 结果1 ELSE 结果2
END
下面通过一个简单的示例来看一下具体用法,表 score
需求说明:score
大于等于 90
为优秀,80~90
为良好,60~80
为及格,小于 60
为不及格,用 SQL
语句统计出每个学生的成绩级别
SELECT NAME, score,( CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 60 THEN '及格' ELSE '不及格' END ) AS LEVEL
FROMscore
结果如下
2.3. 结合使用
CASE WHEN
和聚合函数综合使用,能实现更加复杂的统计功能
下面通过一个简单的示例来看一下具体用法,表 score
需求说明:在 score
表中,统计有多少个男生和女生以及男女生及格的各有多少个
SELECTSUM( CASE WHEN sex = 0 THEN 1 ELSE 0 END ) AS 女生人数,SUM( CASE WHEN sex = 1 THEN 1 ELSE 0 END ) AS 男生人数,SUM( CASE WHEN score >= 60 AND sex = 0 THEN 1 ELSE 0 END ) 男生及格人数,SUM( CASE WHEN score >= 60 AND sex = 1 THEN 1 ELSE 0 END ) 女生及格人数
FROMscore
结果如下
3. IF
条件判断
-- expr 是一个条件表达式,如果结果为 true,则返回 result_true,否则返回 result_false
IF(expr, result_true, result_false)
使用示例
SELECT`name`,IF( sex = 1, '男', '女' ) AS sex
FROMscore
结果如下
可以看出,在一些场景中,IF
函数和 CASE WHEN
是有同样效果的,IF
函数相对简单,CASE WHEN
能应对更复杂的判断。另外,IF
函数还可以和聚合函数结合
例如查询班级男生女生分别有多少人
SELECTSUM(IF( sex = 1, 1, NULL )) AS 男生人数,SUM(IF( sex = 0, 1, NULL )) AS 女生人数
FROMscore
结果如下
4. IF NULL
条件判断
我们希望在 SQL
中做一些处理,如果查询结果是 NULL
,就转换为特定的值,这就要用到 mysql
中 IF NULL
函数
SQL
一般写法是这样的
SELECT price FROM goods WHERE name = 'light'
使用 IF NULL
函数改写一下
SELECT IFNULL(price, 0) price FROM goods WHERE name = 'light'
但使用 IF NULL
语句,如果 where
条件中的 name
值是不存在的,那么仍将返回 NULL
4.1. IF NULL
函数结合聚合函数使用
-- 返回结果:0
SELECT IFNULL(SUM(price), 0) FROM goods WHERE status = 3
其他 AVG、COUNT
等用同样方式处理,而且无论 where
条件存在不存在,结果都是会返回 0
的
MySQL的条件判断函数相关推荐
- .net一个函数要用另一个函数的值_【195期】MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?...
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...
- mysql 条件 函数_mysql 函数 时间函数,数学函数,字符串函数,条件判断函数
=========================================== mysql 相关函数 ============================================= ...
- mysql 属性函数_4-MySQL函数(字段处理函数条件判断函数)
一.字段处理函数 字符串处理函数: concat(field1,field2 -- ) substr(str,pos,len) replace(str,old_str,new_str)[Hive:re ...
- .net一个函数要用另一个函数的值_Mysql:条件判断函数-CASE WHEN、IF、IFNULL详解
前言 在众多SQL中,统计型SQL绝对是让人头疼的一类,之所以如此,是因为这种SQL中必然有大量的判读对比.而条件判断函数就是应对这类需求的利器.本文重点总结CASE WHEN.IF.IFNULL三种 ...
- Python 数据分析三剑客之 NumPy(五):数学 / 算术 / 统计 / 排序 / 条件 / 判断函数合集
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- sql语句条件判断函数(流程控制函数)
在查询语句中,我们可能会遇到使用条件判断函数的情况,今天记录一下条件判断函数的使用. 名称 具体作用 IF(EXPR ,V1,V2) 如果满足条件返回第一个值,否则返回第二个 IFNULL(V1,V2 ...
- html if函数,IF条件判断函数还不会就out了,IF函数七种条件判断用法都在这
IF函数是工作中最常用的函数之一,因为if函数大多是搭配其他函数一起使用,很多人会对这个函数感叹非常难,今天我们来讲解一下if函数的7个常见用法,学完你就算是真正掌握了这个函数了. 1.单条件判断返回 ...
- mysql判断条件用法,MySQL数据库讲解条件判断函数 MySQL数据库使用教程
函数: (1)IF(expr,v1,v2)函数 (2)IFNULL(v1,v2)函数 (3)CASE函数 (相关免费学习推荐:mysql视频教程) (1)if(expr,v1,v2)函数 在if(ex ...
- MySQL函数---条件判断函数
(1)IF(expr,v1,v2)函数 (2)IFNULL(v1,v2)函数 (3)CASE函数 (1)if(expr,v1,v2)函数 在if(expr,v1,v2)函数中,若表达式expr是tru ...
- mysql的条件求和函数_使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解...
首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT date(create_time) AS '当天日期', sum(real_pr ...
最新文章
- C语言volatile关键字详解
- 1024 鲲鹏开发者技术沙龙·福州站圆满收官!给程序员的福利你收到了吗?
- 我用Java+Redis+ES+Kibana技术对数百万知乎用户进行了数据分析,得到了这些...
- 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版...
- Flutter Hero 实现组件跨界面跳动效果
- [Android工具]安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
- 0314互联网新闻 | 陌陌秘密发布6款产品;白熊求职完成数百万元天使轮融资
- 前端常见知识点四之webscoket
- dcdc芯片效率不高的原因_研学丨燃料电池车的典型效率及能耗
- 第一章:了解SQL_数据库基础
- selenium与chromedriver的操作
- c++小学期大作业攻略(二)整体思路+主界面
- 《淘宝技术这十年》读书笔记
- 印象最深刻的三位老师、难忘的往事
- 为文件添加everyone权限
- 基于微信小程序的房屋租赁小程序设计与实现-计算机毕业设计源码+LW文档
- 两年数据对比柱形图_2018年、2019年的数据对比图!想学习这种对比图的做法!安排...
- oracle 日期函数
- 性能测试能力提升-JVM GC原理
- 【C++实训】实训总结
热门文章
- Deepracer 学了就能云驾驭赛车? Deepracer机器学习入门级干货分享!
- 算法:判断是否是循环链表,并返回循环链表开始节点Linked List Cycle II
- 快速记下html css,如何快速记住及输入CSS样式属性单词?
- c++关于函数的参数传递全部知识点详解
- Python入门:Dataframe的索引模式
- 如何配置风骚的android studio编辑器,让编程更优雅?
- 【2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11) G】GCD Guessing Game【数论思维题】
- Raki的读paper小记:ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS
- java类加载器用途_对于java类加载器的认识(2)
- mysql 更新删除数据,MYSQL数据的插入、删除、更新