Mysql GROUP BY 排除null数据

在使用 group by某列名进行分组统计时,该列名的数据有些为 null, 因而会出现 null 的数据行全部分成一组导致数据错误,所以 null 列名的数据行不能执行 group by

直接执行查询得到的结果为:

使用group by进行查询得到的结果为:

很明显,因为master_name有的列为空,所以导致分组的时候将master_name为空的全部合并到一组去了

解决方案:

IFNULL() 函数和 UUID() 函数

网上有类似的解决方案,通过IFNULL()函数搭配UUID()函数即可解决。

1、IFNULL() 函数

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

格式如下:

IFNULL(expression, alt_value)
-- 即可以是列名
IFNULL(user.id, "hahha")
-- 也可以是具体的值
IFNULL(null, "hahha")

2、UUID() 函数

UUID()函数是可以生成时间上独一无二的值。

3、结合使用

因此,在 group by 后使用这两个函数的格式可以如下

group by IFNULL('列名', UUID())

正确得到结果的sql为:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值