mysql count(*)分組之后IFNULL無效問題
mysql count(*)分組后IFNULL無效
因為之前用oracle比較多,mysql沒有經(jīng)過系統(tǒng)性學(xué)習(xí),所以這次碰到這個問題,弄了比較久,在此記錄一下
需求
根據(jù)發(fā)票ID和單位來統(tǒng)計,一個ID下掛靠多少個單位
最開始的錯誤語句
SELECT count(t.CostCenter) AS countNum FROM trip_plane_settlement t WHERE t.itineraryId = #{itineraryId} GROUP BY t.itineraryId, t.CostCenter
后臺用int來接收時,如果返回空就會拋出異常,然后我就想用IFNULL()函數(shù)來實現(xiàn),如果為空時返回0,但是發(fā)現(xiàn)還是返回還是為空,后來查閱資料之后,才發(fā)現(xiàn)如果分組之后,如果查詢條件查不到數(shù)據(jù)時還是會返回null,后面嘗試過 CASE WHEN 來實現(xiàn),發(fā)下還是會返回null,因為查不到數(shù)據(jù)時,整個結(jié)果集都是空的,函數(shù)就不會生效。
后面就想用嵌套循環(huán)來實現(xiàn)試試,發(fā)現(xiàn)果然可以。
解決代碼
SELECT IFNULL(count(*), 0) AS countNum FROM ( SELECT count(t.CostCenter) AS countNum, t.itineraryId, t.CostCenter FROM trip_plane_settlement t GROUP BY t.itineraryId, t.CostCenter ) t1 WHERE t1.itineraryId = #{itineraryId}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Sql根據(jù)不同條件統(tǒng)計總數(shù)的方法(count和sum)
- SQL中count(1)、count(*)?與?count(列名)的區(qū)別詳細解釋
- MySQL數(shù)據(jù)庫統(tǒng)計函數(shù)COUNT的使用及說明
- mysql?count()函數(shù)不計算null和空值問題
- mysql數(shù)據(jù)庫之count()函數(shù)和sum()函數(shù)用法及區(qū)別說明
- mysql一條sql查出多個條件不同的sum或count問題
- MySQL中的count(*)?和?count(1)?區(qū)別性能對比分析
- SQL 中 COUNT 的用法示例詳解
相關(guān)文章
關(guān)于mysql innodb count(*)速度慢的解決辦法
innodb引擎在統(tǒng)計方面和myisam是不同的,Myisam內(nèi)置了一個計數(shù)器,所以在使用 select count(*) from table 的時候,直接可以從計數(shù)器中取出數(shù)據(jù)。而innodb必須全表掃描一次方能得到總的數(shù)量2012-12-12Ubuntu 18.04配置mysql以及配置遠程連接的步驟
這篇文章主要給大家介紹了關(guān)于Ubuntu 18.04配置mysql以及配置遠程連接的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07MySQL安全配置向?qū)ysql_secure_installation詳解
這篇文章主要介紹了MySQL安全配置向?qū)ysql_secure_installation各項配置的含義,并依據(jù)經(jīng)驗給予一了一些建議,需要的朋友可以參考下2014-03-03