文档章节

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

求是科技
 求是科技
发布于 2016/07/22 14:59
字数 284
阅读 592
收藏 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)入门
求是科技

求是科技

粉丝 100
博文 457
码字总数 239234
作品 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
108
2
mysql中sum()函数相减结果为空的处理

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

Ethel_oo
2018/04/20
470
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
127
0
这个SQL该咋整?@SQL大神

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

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

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

Atom_me
2015/10/29
9.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币

原文作者:Xuejie 原文链接:https://xuejie.space/2019_09_06_introduction_to_ckb_script_programming_udt/ Nervos CKB 脚本编程简介[3]:自定义代币 CKB 的 Cell 模型和 VM 支持许多新的用...

NervosCommunity
51分钟前
4
0
通过OAuth2.0 获取授权访问SF 用户数据

通过OAuth2.0 获取授权访问SF 用户数据 OAuth2.0 相关知识 深入了解 Salesforce 中的 OAuth 2.0(SF官方) OAuth 2.0 的一个简单解释(阮一峰大神) OAuth 2.0 的四种方式(阮一峰大神) GitHub OA...

在山的那边
56分钟前
7
0
编写程序:从键盘上接受一个三位数(首先要确保是三位数),计算出各位之和输出。

#include<stdio.h> int main() { int a,sum=0; printf("请输入一个三位数:\n"); scanf("%d",&a); sum=a/100+a%100/10+a%10; printf("这三个数的和:%d",sum); return 0; }......

201905021729吴建森
今天
7
0
如何离开/退出/停用Python virtualenv

我正在使用virtualenv和virtualenvwrapper。 我可以使用workon命令在virtualenv之间切换。 me@mymachine:~$ workon env1(env1)me@mymachine:~$ workon env2(env2)me@mymachine:~$ workon e......

技术盛宴
今天
7
0
成长之路 万事坚持难

任何事情开了头,想要更好的发展下去,不忘初心,就一定要坚持下去。 以前自己坚持了一些事情,比如早睡不吃东西,由于中途断了,没有及时止损,导致又接着恶习断了几天。所以 及时的反省和调...

T型人才追梦者
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部