count条件统计中为什么要加or null
案例
- 案例:统计在今天注册的用户
写法一:直接在where后面跟上条件
select count(1) from user where DATE_FORMAT(register_time,'%Y-%m-%d')=CURDATE()
还有另一种写法:在count函数中添加条件(需要加上or null),大家可以自行测试,如果不加or null
的效果则是除null数据外的全部数据(不管是否符合count中指定的条件)
select count(DATE_FORMAT(register_time,'%Y-%m-%d') = CURDATE() or null) from user
为什么会这样?
因为在count只有在值为null时才不统计数据,而为false时是会统计数据的
做个小测试:
select count(false) from user
会发现和下面这句是一样的情况:
select count(1) from user
分析count(1)的原理:
在每一列后面都拼接上"1"这个字段,然后这一列的每一行的值也都为1
分析count(false)的原理:
在每一列后面都拼接上"false"这个字段,然后这一列的每一行的值也都为false
即:count中的false,根本不是我们理解的那个false,你可以理解他就是一个普通的"false"字符串,和你在count中写一个1、2、3是一样的道理;
false表达不了"假"的意思,那怎么样才能表达"假"的意思呢?
答:就是null,在count计数时,只有遇到null,MySQL才会认为条件为假,即:不统计这条数据;
至于or
的话,和我们平常的操作符一样,第一个条件是true就是不执行or后面的条件,如果第一个条件不为true,那应该就不需要统计这条数据,所以就加个or null
,告诉MySQL不需要统计这条数据;
总结
其实在count里面传递参数计算统计时根本不关心条件表达式里面的返回值,因为他把返回的true、false等值当做一个普通的值,你可以把它理解为就是1/2/3这样的普通值,也就是这句代码:
select count(1) from user;
所以当count条件不成立时返回false的时候,此时MySQL不认,他会把它当做类似于下面的SQL:
select count(false) from user;
我们刚刚分析过MySQL遇到null是就不会统计这条数据,那好办,我们把count里面的条件改为null不就玩了吗,当然还要加上我们本身的条件:
select count(我们的条件 or null) from user;
上面的SQL翻译过来就是:我们的条件不成立时就不统计这条数据;
count条件统计中为什么要加or null相关推荐
- count 有条件 mysql_【笔记】Mysql中使用count加条件统计
前言mysql 最近发如今处理Mysql问题时,count()函数频繁上镜,经常出如今分组统计的情景下,可是有时候并非使用group by分好组就能够直接统计了,好比说一个常见的需求,统计每一个班级男 ...
- mysql多条件count_Mysql中使用count加条件统计
Mysql中使用count加条件统计 0 753 坚持奋斗 2019/6/28 13:19:56 江苏 南京 新建一个Mysql数据表a,包含id和num两个字段 [pre] mysql> ...
- Mysql中使用count加条件统计
文章目录 前言 测试环境 准备工作 条件统计 总结 前言 最近发现在处理Mysql问题时,count()函数频繁上镜,常常出现在分组统计的情景下,但是有时候并不是使用group by分好组就可以直接统 ...
- sql 语句中count()条件计数
在count函数里直接对需要计数的变量写条件表达式 但是需要加 'or NULL',如下所示: select count(distinct job_id), count(pay_pv>0 or ...
- layui table 每列加标签_【前端】layui表格中根据条件给对应的列加背景色
[前端]layui表格中根据条件给对应的列加背景色 [前端]layui表格中根据条件给对应的列加背景色 1.效果(根据条件动态给表格加背景色) 2.代码: 在我自己的项目中,由于条件比较多,提取出了一 ...
- Oracle Decode 函数用法 Count函数条件统计 Sign 函数用法 Case When 函数
Oracle Decode 函数用法 Count函数条件统计 Sign 函数用法 Case When 函数 一.概述 1.本文系统的整理了,Oracle中常见的几个函数用法,都是涉及到条件判断分支类的 ...
- mysql count 条件_我以为我对MySql很了解,直到我面试了字节跳动
小湿来到字节跳动,在静待,此时一位长发飘飘的面试官走来.小湿心里想:哎啊,今天遇到个美女面试官,好好表现 面试官:小湿,我看你简历上写了熟练掌握MySql和MySql的调优是吧? 小湿:是的,面试官. ...
- 为什么建议使用count(*)来统计数据行数
对比MySQL5.7版本.Oracle 11g版本.TiDB3.0版本 其中MySQL是基于 InnoDB 引擎的. MySQL中各种count的行为 参考自:丁奇老师的MySQL 45讲 这里,首先 ...
- mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧
本文的环境是Windows 10,MySQL版本是5.7.12-log 一. 基本使用 count的基本作用是有两个: 统计某个列的数据的数量: 统计结果集的行数: 用来获取满足条件的数据的数量.但是 ...
最新文章
- python精确小数点_python执行精确的小数计算方法
- Too many links;mkdir
- 清理localstorage_vue 界面刷新数据被清除 localStorage的使用详解
- 挖掘经典:几乎被人遗忘的HTML七种用法 (转)
- VSTS 2010体验 - TFS 2010变化巨大
- DJango — URL的Reverse和Resolve
- AX7 Form继承接口
- 洛谷——P1548 [NOIP1997 普及组] 棋盘问题
- C#自动切换Windows窗口程序,如何才能调出主窗口?
- php对接监控摄像头源码,摄像头监控录像源代码 (详细的代码,可以直接使用,也可以拿来学习使用)...
- Powerpoint 插件制作日记-1
- 一些常见监控服务如Nagios、Cacti和Zabbix的搭建
- 【唯美日出win7热门主题】
- 跨平台 H264 H265/HEVC 编解码 硬件加速
- 构造图片对网络进行对抗攻击n+m=7
- mac os之监听触摸板(捏合、旋转、三指)
- EmguCV学习(一)
- [NPUCTF2020]ezlogin xPATH注入
- Java岗大厂面试百日冲刺【Day44】— Redis3 (日积月累,每日三题)
- 两步建立自己的kindle书库