groupby分组MySQLgroupby不对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
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
de, UUID())
ORDER BY
STR_TO_act_date, '%Y-%m-%d') ASC;
效果截图如下
⾄此,问题解决。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。