文档章节

SQL -- ifnull(sum(属性) vs 对象.属性)

求是科技
 求是科技
发布于 2016/07/22 14:59
字数 284
阅读 40
收藏 0

今天工程时,遇到一个情况,计算t_user_listen表中QUESTION_ID=xx时,LISTEN_NUM的个数

输入图片说明
个数肯定不能为null返回给前端,因此需要对结果进行处理,当结果为null的时候返回0,否则返回结果数,正常情况下,大伙都会想到mysql 的ifnuu函数,如下
输入图片说明
我之前写过一篇文章,关于ifnull,请查看
http://my.oschina.net/u/2312022/blog/703396
在这里解释如下
1.查询的对象本身为null,如下图
输入图片说明
2.对象.属性为null
输入图片说明
3.ifnull(对象.属性,0)
输入图片说明
总结:很明显,
1>对象为null时,ifnull(对象.属性,0)是失效的 2>SELECT IFNULL(SUM(tul.LISTEN_NUM),0) FROM t_user_listen tul WHERE tul.QUESTION_ID = '51230958430954308' 这种情况是有效的,见下图
输入图片说明
3>情况2之所以满足ifnull,我估计是使用了sum()函数的原因,使用sum函数后得到的结果就不是一个对象了,是一个纯粹的数字(或null)了,在对纯粹的数字(或null)进行ifnull判断,肯定是有效的。
4>针对上述问题,采用如下方法也能解决问题

输入图片说明

© 著作权归作者所有

共有 人打赏支持
上一篇: SQL --count的使用
下一篇: spring --(1)入门
求是科技
粉丝 91
博文 439
码字总数 226317
作品 0
成都
后端工程师
私信 提问
mysql

select IFNULL(SUM(AGENT_SCORE),0) sum, DATE_FORMAT(CREATOR_TIME,'%Y-%m-%d') as CREATOR_TIMEE from m_share where WX_CODE='1000025' GROUP BY CREATOR_TIMEE ORDER BY CREATOR_TIMEE D......

random_xy
2017/11/30
92
2
mysql中sum()函数相减结果为空的处理

我有两张表,一张工资表income,消费表payment,需要SQL查询出某一个人在本月的消费余额。当消费表记录为空或者工资表记录为空时,两个sum()函数相减MySQL显示结果为空值。 没有做判断空值的...

Ethel_oo
04/20
0
0
SUM统计使用CASE WHEN

SUM统计使用CASE WHEN 如下建立表结构, create table test (id int not null AUTO_INCREMENT,type int not null,value int not null,primary key (id)); INSERT INTO test (type,value)VAL......

秋风醉了
2015/07/08
0
0
这个SQL该咋整?@SQL大神

TableA:aid(自增列),class(部门编号),value(绩效得分) TableB(id(部门编号),name(部门名称)) 想统计部门绩效分总和,SQL 经过指点得到 SELECT name,IFNULL(sum(`value`),0) as ...

水人
2015/09/08
235
5
mybatis sql中查询类型为int的字段,返回null的异常

l中查询类型为int的字段,返回null的异常 项目中用mybatis3.x,用sql查询某个表类型为int的字段,那个表是空表,没有数据,结果抛异常了,原因是在对象中的属性为int,空表时,sql查询出来的是...

Atom_me
2015/10/29
9.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

走上真正的教育之路——《中国最美的语文》读后感3100字

走上真正的教育之路——《中国最美的语文》读后感3100字: 文:张平。《中国最美的语文》,乍一听,你可能会觉得这个作者或者编辑有些大言不惭,竟然起这么大而狂的名字,可能名不副实。我没...

原创小博客
21分钟前
1
0
tomcat线程模型

Connector结构 BIO模式 NIO模式

grace_233
41分钟前
2
0
Javascript

变量定义 以$,_,字母开头 大小写敏感 var 关键字声明变量 声明未赋值undefined 数据类型 字符串,数字,布尔,数组,NULL,undefined 变量均为对象 函数 无默认值 var声明的是局部变量 函数外声明...

关元
42分钟前
1
0
文件系统、服务、防火墙、SELINUX——安全四大金刚

一提到安全,大家都会想到防火墙,和文件系统权限。而实际工作环境中,我们在Linux的安全配置,会涉及到四个级别。我们思考一个场景,你要在百度盘中存放一个文件,这个动作需要考虑下面四个...

Linux就该这么学
44分钟前
3
0
从源码角度理解Java设计模式——门面模式

一、门面模式介绍 门面模式定义:也叫外观模式,定义了一个访问子系统的接口,除了这个接口以外,不允许其他访问子系统的行为发生。 适用场景:子系统很复杂时,增加一个接口供外部访问。 优...

我叫刘半仙
53分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部