簡單說一下MySQL sum(1) count(1) 區別和聯系


有人說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()  我們想要的統計效果

 

多多實踐總結~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM