gpt4 book ai didi

MySQL GROUP BY WITH ROLLUP - 想要 ROLLUP 所有排列

转载 作者:行者123 更新时间:2023-11-29 01:04:24 26 4
gpt4 key购买 nike

以这张表为例(我们称之为BIN_TABLE):

+------+------+
| A | B |
+------+------+
| 0 | 0 |
| 0 | 1 |
| 1 | 1 |
| 1 | 0 |
+------+------+

我想把它卷起来,所以我这样做了:

SELECT   A, B, COUNT(*)
FROM BIN_TABLE
GROUP BY A, B WITH ROLLUP;

然后我得到:

+------+------+----------+
| A | B | COUNT(*) |
+------+------+----------+
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | NULL | 2 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| 1 | NULL | 2 |
| NULL | NULL | 4 |
+------+------+----------+

这是 WITH ROLLUP 如何使用我放在 GROUP BY 子句中的字段顺序的示例。

我还想在结果中包含以下几行:

| NULL |    1 |        2 |
| NULL | 0 | 2 |

这意味着我拥有所有汇总的排列。

这是否可以不求助于此:

SELECT   A, B, COUNT(*)
FROM BIN_TABLE
GROUP BY A, B WITH ROLLUP
UNION
SELECT NULL, B, COUNT(*)
FROM BIN_TABLE
GROUP BY B

(如果重要的话,我使用 MySQL 5.6)

最佳答案

不,我相信 UNION 是唯一的方法。但是,您可以使用 UNION ALL(而不是隐式的 UNION DISTINCT)来避免不必要地搜索重复项。

关于MySQL GROUP BY WITH ROLLUP - 想要 ROLLUP 所有排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com