mysql count(*)分组之后IFNULL无效问题
更新时间:2024年11月16日 14:29:55 作者:程序猿猿猿猿猿
文章总结:作者分享了在解决MySQL中根据发票ID和单位统计单位数量的问题时遇到的困难及解决方法,通过使用IFNULL()函数和CASEWHEN都无法解决问题,最终作者选择了嵌套循环的方法来实现需求,并总结了经验以供参考
mysql count(*)分组后IFNULL无效
因为之前用oracle比较多,mysql没有经过系统性学习,所以这次碰到这个问题,弄了比较久,在此记录一下
需求
根据发票ID和单位来统计,一个ID下挂靠多少个单位
最开始的错误语句
SELECT
count(t.CostCenter) AS countNum
FROM
trip_plane_settlement t
WHERE
t.itineraryId = #{itineraryId}
GROUP BY
t.itineraryId,
t.CostCenter后台用int来接收时,如果返回空就会抛出异常,然后我就想用IFNULL()函数来实现,如果为空时返回0,但是发现还是返回还是为空,后来查阅资料之后,才发现如果分组之后,如果查询条件查不到数据时还是会返回null,后面尝试过 CASE WHEN 来实现,发下还是会返回null,因为查不到数据时,整个结果集都是空的,函数就不会生效。
后面就想用嵌套循环来实现试试,发现果然可以。
解决代码
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}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
mysql慢查询日志分析工具使用(pt-query-digest)
这篇文章主要介绍了mysql慢查询日志分析工具使用(pt-query-digest),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
2022最新版MySQL 8.0.30 安装及配置教程(小白入门)
这篇文章主要介绍了2022最新版MySQL 8.0.30 安装及配置教程,安装过程算是比较简单的,今天给大家分享的此文比较适合mysql数据库的小白,需要的朋友可以参考下2022-09-09


最新评论