MySQL使用GROUP BY分组,根据分组值对应,为null的分组展示为0或自定义数值
MySQL使用GROUP BY分组,根据分组值对应,为null的分组展示为0或自定义数值
·
需求场景
根据某个值进行GROUP BY分组查询
假设某个值有:0、1、2、3、4、5
但查询时,表中没有值为3的记录,分组后则没有3这一项
需要使3这一项展示在结果集中
因为没有值为3的记录,查询结果为:
需求的结果应为:
SQL实现
思路: 确定全部分组值,获取并在sql里进行连接
不查表,不代码创建零时表获取分组值列表:
SELECT 0 AS id UNION
SELECT 1 AS id UNION
SELECT 2 AS id UNION
SELECT 3 AS id UNION
SELECT 4 AS id UNION
SELECT 5 AS id
可以获取到一个零时的结果集:
将结果集作为主表‘r’,连接原SQL的查询结果集‘t’,则实现:
SELECT r.id,
IFNULL(t.num,0)
FROM (SELECT 0 AS id UNION
SELECT 1 AS id UNION
SELECT 2 AS id UNION
SELECT 3 AS id UNION
SELECT 4 AS id UNION
SELECT 5 AS id) r
LEFT JOIN () t ON t.type=r.id
特殊情况,特殊而定
一般有分组值可直接进行关联则不必这样写sql,此种方法多用与单表内的数据统计
有更好的方法可以留意,刚好遇到,记录一下
更多推荐
已为社区贡献2条内容
所有评论(0)