有人說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() 我們想要的統計效果
多多實踐總結~