有人说sum(1) 相当于 count(1) ,其实还是有一点点差别;
1. 首先说一下使用过程中注意的点
sum(1) count(1) 使用过程中都有可能返回值为NULL,并不是统计不到就返回值为0
以下数据表实例
<1> 对于sum(1),如果带 where 条件查不到数据,则返回Null
SELECT sum(1) FROM tickets WHERE `order` > 10000
<2> 对于 count(1) ,如果带 where 且 group by 操作, where条件下无数据,也会返回NUll
SELECT count(1) FROM tickets WHERE `order` > 10000 GROUP BY priority
都可以用 IFNULL(count(1),0) 优化处理
2.具体说一下 sum(1) count(1) 统计数据上面的差别
SELECT sum(if(t.`order`=666,1,0)) as sum , count(if(t.`order`=666,1,0)) as count, count(1), count(0), sum(1), sum(0) FROM tickets t GROUP BY priority
可以看到,count() 其中请携带的if条件没有起作用,在分组后,count(1) count(0) 统计的都是所有条数, sum可根据 0 1 起到 if() 我们想要的统计效果
多多实践总结~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2566.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...