目录

  • 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,就转换为特定的值,这就要用到 mysqlIF 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的条件判断函数相关推荐

  1. .net一个函数要用另一个函数的值_【195期】MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  2. mysql 条件 函数_mysql 函数 时间函数,数学函数,字符串函数,条件判断函数

    =========================================== mysql 相关函数 ============================================= ...

  3. mysql 属性函数_4-MySQL函数(字段处理函数条件判断函数)

    一.字段处理函数 字符串处理函数: concat(field1,field2 -- ) substr(str,pos,len) replace(str,old_str,new_str)[Hive:re ...

  4. .net一个函数要用另一个函数的值_Mysql:条件判断函数-CASE WHEN、IF、IFNULL详解

    前言 在众多SQL中,统计型SQL绝对是让人头疼的一类,之所以如此,是因为这种SQL中必然有大量的判读对比.而条件判断函数就是应对这类需求的利器.本文重点总结CASE WHEN.IF.IFNULL三种 ...

  5. Python 数据分析三剑客之 NumPy(五):数学 / 算术 / 统计 / 排序 / 条件 / 判断函数合集

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  6. sql语句条件判断函数(流程控制函数)

    在查询语句中,我们可能会遇到使用条件判断函数的情况,今天记录一下条件判断函数的使用. 名称 具体作用 IF(EXPR ,V1,V2) 如果满足条件返回第一个值,否则返回第二个 IFNULL(V1,V2 ...

  7. html if函数,IF条件判断函数还不会就out了,IF函数七种条件判断用法都在这

    IF函数是工作中最常用的函数之一,因为if函数大多是搭配其他函数一起使用,很多人会对这个函数感叹非常难,今天我们来讲解一下if函数的7个常见用法,学完你就算是真正掌握了这个函数了. 1.单条件判断返回 ...

  8. mysql判断条件用法,MySQL数据库讲解条件判断函数 MySQL数据库使用教程

    函数: (1)IF(expr,v1,v2)函数 (2)IFNULL(v1,v2)函数 (3)CASE函数 (相关免费学习推荐:mysql视频教程) (1)if(expr,v1,v2)函数 在if(ex ...

  9. MySQL函数---条件判断函数

    (1)IF(expr,v1,v2)函数 (2)IFNULL(v1,v2)函数 (3)CASE函数 (1)if(expr,v1,v2)函数 在if(expr,v1,v2)函数中,若表达式expr是tru ...

  10. mysql的条件求和函数_使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解...

    首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT date(create_time) AS '当天日期', sum(real_pr ...

最新文章

  1. C语言volatile关键字详解
  2. 1024 鲲鹏开发者技术沙龙·福州站圆满收官!给程序员的福利你收到了吗?
  3. 我用Java+Redis+ES+Kibana技术对数百万知乎用户进行了数据分析,得到了这些...
  4. 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版...
  5. Flutter Hero 实现组件跨界面跳动效果
  6. [Android工具]安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
  7. 0314互联网新闻 | 陌陌秘密发布6款产品;白熊求职完成数百万元天使轮融资
  8. 前端常见知识点四之webscoket
  9. dcdc芯片效率不高的原因_研学丨燃料电池车的典型效率及能耗
  10. 第一章:了解SQL_数据库基础
  11. selenium与chromedriver的操作
  12. c++小学期大作业攻略(二)整体思路+主界面
  13. 《淘宝技术这十年》读书笔记
  14. 印象最深刻的三位老师、难忘的往事
  15. 为文件添加everyone权限
  16. 基于微信小程序的房屋租赁小程序设计与实现-计算机毕业设计源码+LW文档
  17. 两年数据对比柱形图_2018年、2019年的数据对比图!想学习这种对比图的做法!安排...
  18. oracle 日期函数
  19. 性能测试能力提升-JVM GC原理
  20. 【C++实训】实训总结

热门文章

  1. Deepracer 学了就能云驾驭赛车? Deepracer机器学习入门级干货分享!
  2. 算法:判断是否是循环链表,并返回循环链表开始节点Linked List Cycle II
  3. 快速记下html css,如何快速记住及输入CSS样式属性单词?
  4. c++关于函数的参数传递全部知识点详解
  5. Python入门:Dataframe的索引模式
  6. 如何配置风骚的android studio编辑器,让编程更优雅?
  7. 【2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11) G】GCD Guessing Game【数论思维题】
  8. Raki的读paper小记:ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS
  9. java类加载器用途_对于java类加载器的认识(2)
  10. mysql 更新删除数据,MYSQL数据的插入、删除、更新