mysql支持grouping sets吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql支持grouping sets吗相关的知识,希望对你有一定的参考价值。
mysql 8.0 新增了 GROUPING() 函数,用来理清 GROUP BY with rollup 子句检索后所产生的每个分组汇总结果。 grouping 可用在分组列,having 子句以及 order by 子句。
GROUPING() 函数用来返回每个分组是否为 ROLLUP 结果,是为 1 否为 0。从结果中,很容易就能区分哪些 NULL 是正常记录,哪些是 ROLLUP 的结果。
GROUPING() 函数不仅仅是针对单个字段来统计汇总值,还可以针对多个字段。
此时会发现,GROUPING() 函数对多个字段结果并非只有 1 和 0,还有一个值为 3。在 GROUPING() 函数包含多个参数时,按照以下方式来返回结果:
GROUPING(r1,r2) 等价于 GROUPING(r2) + GROUPING(r1) << 1
GROUPING(r1,r2,r3,...) 等价于 GROUPING(r3) + GROUPING(r2) << 1 + GROUPING(r1) << 2
以此类推
GROUPING 语句还可以用在 HAVING 子句里,比如用 GROUPING 子句来过滤掉非 ROLLUP 的结果。
使用group_concat 时,设置mysql默认的长度
SHOW VARIABLES LIKE "group_concat_max_len";
SET GLOBAL group_concat_max_len=1024000;
SET @@GROUP_CONCAT_MAX_LEN = 1024000;
以上是关于mysql支持grouping sets吗的主要内容,如果未能解决你的问题,请参考以下文章
Mysql 5.6.12 Group_concat 与内部连接问题