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 存储过程的问题

    mysql 存储过程的问题

    最近我接触了一本php 与 mysql,老外写的一本书,书中有个tshirtshop网店代码,其中操作数据库的大多用的是mysql存储过程
    2009-06-06
  • mysql 8.0.12 快速安装教程

    mysql 8.0.12 快速安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.12的快速安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • win2008下mysql8.0.11升级mysql8.0.17版本详细步骤

    win2008下mysql8.0.11升级mysql8.0.17版本详细步骤

    这篇文章主要为大家详细介绍了win2008下mysql8.0.11升级mysql8.0.17版本详细步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • MYSQL多表联查on和where的区别小结

    MYSQL多表联查on和where的区别小结

    在使用left join时过滤条件放到on后面还是where后面是有区别的,如果没有搞清楚他们的区别,连表汇总的结果就会变少或者变多,本文就来详细介绍一下两者的区别,感兴趣的可以了解一下
    2023-11-11
  • MySQL 外键约束和表关系相关总结

    MySQL 外键约束和表关系相关总结

    一个项目中如果将所有的数据都存放在一张表中是不合理的,比如一个员工信息,公司只有2个部门,但是员工有1亿人,就意味着员工信息这张表中的部门字段的值需要重复存储,极大的浪费资源,因此可以定义一个部门表和员工信息表进行关联,而关联的方式就是外键。
    2021-06-06
  • Mysql的复合索引如何生效

    Mysql的复合索引如何生效

    本文主要介绍了Mysql的复合索引如何生效,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • mysql之连接超时wait_timeout问题及解决方案

    mysql之连接超时wait_timeout问题及解决方案

    这篇文章主要介绍了mysql之连接超时wait_timeout问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 实例讲解MySQL统计库表大小

    实例讲解MySQL统计库表大小

    这篇文章主要介绍了MySQL统计库表大小的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 解决数据库有数据但查询出来的值为Null问题

    解决数据库有数据但查询出来的值为Null问题

    这篇文章主要介绍了解决数据库有数据但查询出来的值为Null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • mysql 5.7.17 安装配置方法图文教程

    mysql 5.7.17 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.17 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论