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>针对上述问题,采用以下方法也能解决问题mysql

输入图片说明

相关文章
相关标签/搜索