mysql count()函數使用表達式的正確用法


1.情景展示

  關於count()函數的用法,我們常用的有count(1),count(*),count(列名),count(distinct 列名),關於這些用法見文末推薦;

  在mysql中,count()函數里面是可以加表達式的,即:count(表達式),這個有什么用處呢?

  通常情況下,我們經常會用到狀態,比如說用某一字段來表示用戶的狀態,當我們需要進行按用戶狀態進行統計計數時,用它將會變得非常方便。

  但是,在實際運用過程中,你將會發現神奇的一幕:

  該表中,明明有maintype=1和maintype=2的行記錄,但是,我們會發現,不論是maintype=1還是maintype=2,其統計結果和統計該列的總數沒有任何區別,這是怎么回事?

2.原因分析

  原因就出在表達式上:count()函數,只有當括號()里面的值為null時,不進行計數,否則,count(任意內容)都會進行計數+1,具體示例如下:

  看懂這個例子,就會明白為什么maintype=1和maintype=2並沒有起作用的原因

3.解決方案

  由上面我們知道:只有在null時,count才不會計數,所以,當=不成立時,讓它執行count(null)

  解決辦法:在原有表達式的基礎上+"or null"

  正確統計結果: 

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

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



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