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

今天工程时,遇到一个情况,计算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>针对上述问题,采用如下方法也能解决问题

输入图片说明

转载于:https://my.oschina.net/u/2312022/blog/716214

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值