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 的结果。

参考技术A 好像不支持的 参考技术B 你用这个的用处是什么呢?

使用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吗的主要内容,如果未能解决你的问题,请参考以下文章

Solr中Facet用法和Group用法

Mysql 5.6.12 Group_concat 与内部连接问题

PHP / MySQL用户系统w / groups

首次使用MySQL和Oracle的group by就掉坑!

MySQL: Set user variable from result of query

Scheduler 租户虚机到不同host