案例

  • 案例:统计在今天注册的用户

写法一:直接在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相关推荐

  1. count 有条件 mysql_【笔记】Mysql中使用count加条件统计

    前言mysql 最近发如今处理Mysql问题时,count()函数频繁上镜,经常出如今分组统计的情景下,可是有时候并非使用group by分好组就能够直接统计了,好比说一个常见的需求,统计每一个班级男 ...

  2. mysql多条件count_Mysql中使用count加条件统计

    Mysql中使用count加条件统计  0  753 坚持奋斗 2019/6/28 13:19:56 江苏 南京 新建一个Mysql数据表a,包含id和num两个字段 [pre] mysql> ...

  3. Mysql中使用count加条件统计

    文章目录 前言 测试环境 准备工作 条件统计 总结 前言 最近发现在处理Mysql问题时,count()函数频繁上镜,常常出现在分组统计的情景下,但是有时候并不是使用group by分好组就可以直接统 ...

  4. sql 语句中count()条件计数

    在count函数里直接对需要计数的变量写条件表达式 但是需要加 'or NULL',如下所示: select count(distinct job_id), count(pay_pv>0 or ...

  5. layui table 每列加标签_【前端】layui表格中根据条件给对应的列加背景色

    [前端]layui表格中根据条件给对应的列加背景色 [前端]layui表格中根据条件给对应的列加背景色 1.效果(根据条件动态给表格加背景色) 2.代码: 在我自己的项目中,由于条件比较多,提取出了一 ...

  6. Oracle Decode 函数用法 Count函数条件统计 Sign 函数用法 Case When 函数

    Oracle Decode 函数用法 Count函数条件统计 Sign 函数用法 Case When 函数 一.概述 1.本文系统的整理了,Oracle中常见的几个函数用法,都是涉及到条件判断分支类的 ...

  7. mysql count 条件_我以为我对MySql很了解,直到我面试了字节跳动

    小湿来到字节跳动,在静待,此时一位长发飘飘的面试官走来.小湿心里想:哎啊,今天遇到个美女面试官,好好表现 面试官:小湿,我看你简历上写了熟练掌握MySql和MySql的调优是吧? 小湿:是的,面试官. ...

  8. 为什么建议使用count(*)来统计数据行数

    对比MySQL5.7版本.Oracle 11g版本.TiDB3.0版本 其中MySQL是基于 InnoDB 引擎的. MySQL中各种count的行为 参考自:丁奇老师的MySQL 45讲 这里,首先 ...

  9. mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧

    本文的环境是Windows 10,MySQL版本是5.7.12-log 一. 基本使用 count的基本作用是有两个: 统计某个列的数据的数量: 统计结果集的行数: 用来获取满足条件的数据的数量.但是 ...

最新文章

  1. python精确小数点_python执行精确的小数计算方法
  2. Too many links;mkdir
  3. 清理localstorage_vue 界面刷新数据被清除 localStorage的使用详解
  4. 挖掘经典:几乎被人遗忘的HTML七种用法 (转)
  5. VSTS 2010体验 - TFS 2010变化巨大
  6. DJango — URL的Reverse和Resolve
  7. AX7 Form继承接口
  8. 洛谷——P1548 [NOIP1997 普及组] 棋盘问题
  9. C#自动切换Windows窗口程序,如何才能调出主窗口?
  10. php对接监控摄像头源码,摄像头监控录像源代码 (详细的代码,可以直接使用,也可以拿来学习使用)...
  11. Powerpoint 插件制作日记-1
  12. 一些常见监控服务如Nagios、Cacti和Zabbix的搭建
  13. 【唯美日出win7热门主题】
  14. 跨平台 H264 H265/HEVC 编解码 硬件加速
  15. 构造图片对网络进行对抗攻击n+m=7
  16. mac os之监听触摸板(捏合、旋转、三指)
  17. EmguCV学习(一)
  18. [NPUCTF2020]ezlogin xPATH注入
  19. Java岗大厂面试百日冲刺【Day44】— Redis3 (日积月累,每日三题)
  20. 两步建立自己的kindle书库

热门文章

  1. 数字教学媒体有计算机,外语数字化网络媒体教学
  2. 资金申报项目管理系统 - 系统介绍篇
  3. 使用Modernizr进行兼容性检查
  4. 区号|电话号码|城区|邮编
  5. 四步搞定64位win7安装CAD2008
  6. 企业为什么难创新?5个常见的创新障碍
  7. matlab 识别箭头方向,怎么判断箭头方向,求代码。。。
  8. 如何下载bilibili类似网站里面的视屏,之后转音频
  9. Mac更新catalina后显示剩余空间不足的解决方法,可清除空间清除方法
  10. NLP自然语言处理之基于BiLstm的短文本情感分析