SQL -- ifnull(sum(属性) vs 对象.属性)
SQL -- ifnull(sum(属性) vs 对象.属性)
求是科技 发表于2年前
SQL -- ifnull(sum(属性) vs 对象.属性)
  • 发表于 2年前
  • 阅读 25
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

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

输入图片说明

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 87
博文 439
码字总数 223066
×
求是科技
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: