MySQL group by 不对 null 进行分组统计
MySQL group by 不对 null 进行分组统计
在使用 group by
某列名进行分组统计时,该列名的数据有些为 null, 因而会出现 null 的数据行全部分成一组导致数据错误,所以 null 列名的数据行不能执行 group by
IFNULL() 函数和 UUID() 函数
网上有类似的解决方案,通过IFNULL()
函数搭配UUID()
函数即可解决。
1、IFNULL() 函数
IFNULL()
函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
格式如下:
复制IFNULL(expression, alt_value)
-- 即可以是列名
IFNULL(user.id, "hahha")
-- 也可以是具体的值
IFNULL(null, "hahha")
2、UUID() 函数
UUID()
函数是可以生成时间上独一无二的值。
select UUID()
3、结合使用
因此,在 group by
后使用这两个函数的格式可以如下
group by IFNULL('列名', UUID())
部分的sql语句如下,如果合同编码为空,则不进行分组。
SELECT
c.code as '合同编码',
a.contract_money AS '合同总额',
a.maintain_money AS '维护费金额',
sum(a.actual_money) AS '已收款金额'
FROM
finance_contract_receipt a
LEFT JOIN business_customer b ON b.id = a.customer_id
LEFT JOIN finance_contract c ON c.id = a.contract_id
LEFT JOIN base_type d ON d.id = a.type
GROUP BY
IFNULL(c.code, UUID())
ORDER BY
STR_TO_DATE(c.contract_date, '%Y-%m-%d') ASC;
效果截图如下
至此,问题解决。
自我控制是最强者的本能-萧伯纳
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!