当前位置: 代码网 > it编程>数据库>Mysql > mysql count(*)分组之后IFNULL无效问题

mysql count(*)分组之后IFNULL无效问题

2024年11月18日 Mysql 我要评论
mysql count(*)分组后ifnull无效因为之前用oracle比较多,mysql没有经过系统性学习,所以这次碰到这个问题,弄了比较久,在此记录一下需求根据发票id和单位来统计,一个id下挂靠

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}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com