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 则返回第一个参数的值。

格式如下:

扫描二维码关注公众号,回复: 13042550 查看本文章
IFNULL(expression, alt_value)
-- 即可以是列名
IFNULL(user.id, "hahha")
-- 也可以是具体的值
IFNULL(null, "hahha")

2、UUID() 函数

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

3、结合使用

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

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

正确得到结果的sql为:

猜你喜欢

转载自blog.csdn.net/Crystalqy/article/details/114086528