文档章节

IFNULL(COUNT(*),0) 结果为 NULL

learn_more
 learn_more
发布于 2016/07/11 11:54
字数 487
阅读 453
收藏 0
点赞 1
评论 0

IFNULL(COUNT(*),0) 结果为 NULL,是你也会奇怪吧?不是说 count 返回的值是 0 或大于 0 的数值吗?就算 count 返回 null,那么IFNULL也因该 返回 0 啊?

首先来看看这条语句:

 

    SELECT COUNT(*) FROM t_paper_structure tps WHERE tps.paper_id = 210 AND tps.structure_type = 4 

 

返回的结果应该是 0 或者大于 0 的数值,但是不会返回 null , 所以很多人就会觉得 count 不会返回 null,那接着看下面的语句

 

    SELECT COUNT(*) FROM t_paper_structure tps WHERE tps.paper_id = 210 AND tps.structure_type = 4 GROUP BY tps.paper_id 

 

和上面相比多了一个 group by 分组,千万别小看 MySQL的 group by , 它可比 Oracle 、SQLServer的灵活多了。加了分组之后的返回结果是 null , 0 ,>0;这个时候就会问为什么呢?count这么还会返回 null 呢?然后,就会想到使用 IFNULL ,接着下面的语句

 

    SELECT IFNULL(COUNT(*),0) FROM t_paper_structure tps WHERE tps.paper_id = 210 AND tps.structure_type = 4 GROUP BY tps.paper_id 

 

如果为空就应该返回 0 ,否则返回 count(*) 的值,可是事与愿违,它返回的结果还是 null , 0 ,>0;

注意 IFNULL:查询出的这条记录要有值,只是这条记录的某个字段为null时,才可以使用ifnull

那么,可以这样解释结果为null的情况,首先执行 WHERE tps.paper_id = 210 AND tps.structure_type = 4 ,表中没有这样的记录,所以返回为空,然后 group by ,分组的前提是必须要有记录,如果有记录哪怕分组的字段是null也会对null进行分组统计,但是如果没有记录,那么就会返回null。另外  IFNULL 同样也是要有记录,才会有效果,如果没有记录,返回的还是null。

 

感谢这篇博客 : http://my.oschina.net/u/2312022/blog/703396

 

 

© 著作权归作者所有

共有 人打赏支持
learn_more
粉丝 90
博文 240
码字总数 210196
作品 0
深圳
程序员
MySql中is NULL、ISNULL()和IFNULL()运行速度的比较

第一步,is NULL要比ISNULL()的比较 SELECT * from 表名 where 字段名 is NULL SELECT * from 表名 where ISNULL(字段名) 查询的结果is NULL要比ISNULL()快一点。 第二步,is NULL和IFNULL(...

saulc
05/18
0
0
mysql IFNULL IF

假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,refund,cancel. 我们知道查询状态为cancel的订单,SQL语句可以这样写:SELECT * FROM qorder WHERE status = 'cancel' ...

chenzy526
2015/07/27
0
0
MyBatis Error:BindingException Mapper method attempted to return null

错误描述: 在使用Mybatis的项目中有一个查询最新插入数据的需求。我写了如下SQL语句: 当表中有数据时,使用这个SQL查询是没有错误的,但是当表中没有数据则会出现如下错误: org.apache.i...

开源中国首席有志青年
01/14
1
0
SQL --ifnull的使用

mysql的ifnull大伙都不陌生,肯定是用过很多次了基本用法:ifnull(expr1,expr2)如果expr1不是null,则ifnull()返回expr1的值,否则返回expr2的值。如下示例是我今天遇到的问题1.从tcc表中查询...

求是科技
2016/06/30
371
0
SQL -- ifnull(sum(属性) vs 对象.属性)

今天工程时,遇到一个情况,计算tuserlisten表中QUESTIONID=xx时,LISTENNUM的个数 个数肯定不能为null返回给前端,因此需要对结果进行处理,当结果为null的时候返回0,否则返回结果数,正常...

求是科技
2016/07/22
25
0
sql 高级(七)(null 值,isnull()、nvl()、ifnull()、coalesce)

SQL IS NULL 仅仅选取在 "Address" 列中带有 NULL 值的记录 select LastName,FirstName,Address FROM Persons where Address is null 结果集: LastName FirstName Address Adams John Cart......

萧小蚁
2015/08/07
0
0
MySQL 使用 group by 之后然后 IFNULL(COUNT(*),0) 为什么还是会获得 null

如题 MySQL 使用 group by 之后然后 IFNULL(COUNT(*),0) 为什么还是会获得 null

learn_more
2016/07/06
2.8K
5
mysql学习笔记(四)--- 聚合函数、控制流程函数

【正文】 一、navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设...

舞艺超炫
2017/02/27
0
0
MySQL常用函数系列之十:流程函数(1)

本文将演示以下2个 MySQL中的常用流程函数 函数 功能 IF(value,t,f) 如果value是真,返回t;否则返回f IFNULL(value1,value2) 如果value1不为空返回value1,否则返回value2 下面将结合实例对...

博为峰教研组
2016/11/24
0
0
请教关于Mysql的IFNULL和ISNULL

我有一张TMERCHANT表,主键是MERCHANTID,有个PARENT_ID字段,存储父节点,默认值为0。 现在我想根据MERCHANTID查询TMERCHANT表里的PARENTID,当记录不存在或者PARENTID为NULL的时候返回0,S...

liujiduo
2015/03/10
307
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
21分钟前
0
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
28分钟前
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
33分钟前
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
36分钟前
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
0
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0
iptables规则备份和恢复、firewalld的9个zone以及操作和service的操作

保存以及备份iptalbes规则 设定了的防火墙规则要进行保存,否则系统重启后这些规则就没有了,使用命令 ”service iptables save ” 会把设定好的防火墙规则保存到文件/etc/sysconfig/iptabl...

黄昏残影
昨天
0
0
k8s image

k8s.gcr.io/kube-apiserver-amd64:v1.11.0k8s.gcr.io/kube-controller-manager-amd64:v1.11.0k8s.gcr.io/kube-scheduler-amd64:v1.11.0k8s.gcr.io/kube-proxy-amd64:v1.11.0k8s.gcr.......

分秒
昨天
0
0
数据结构--排序

这篇博客包含了数据结构中多种的排序算法: (1)简单选择:第一趟在A[0]~A[n-1]之间找到最小的,与A[0]进行交换,之后在A[1]~A[n-1]之间进行。。。第i趟在A[i-1]~A[n-1]之间找到最小的,最后...

wangxuwei
昨天
1
0
一名3年工作经验的java程序员应该具备的职业技能

一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪...

老道士
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部