MySQL的WITH ROLLUP是一种用于在GROUP BY子句中生成汇总行的特殊选项。它可以通过在SELECT语句中指定ROLLUP选项来启用。使用WITH ROLLUP选项可以将查询结果按照指定的列进行分组,并且在每个分组的末尾添加一行汇总数据。
例如,假设我们有一个名为orders的表,包含以下数据:
sql复制代码+------+-------+--------+ | year | month | amount | +------+-------+--------+ | 2020 | 1 | 100 | | 2020 | 2 | 200 | | 2021 | 1 | 300 | | 2021 | 2 | 400 | +------+-------+--------+
我们可以使用WITH ROLLUP选项将数据按照年和月进行分组,并生成汇总行:
sql复制代码SELECT year, month, SUM(amount) FROM orders GROUP BY year, month WITH ROLLUP;
这将生成以下结果:
yaml复制代码+------+-------+-------------+ | year | month | SUM(amount) | +------+-------+-------------+ | 2020 | 1 | 100 | | 2020 | 2 | 200 | | 2020 | NULL | 300 | | 2021 | 1 | 300 | | 2021 | 2 | 400 | | 2021 | NULL | 700 | | NULL | NULL | 1000 | +------+-------+-------------+
注意到在每个分组的末尾都添加了一行汇总数据,其中NULL表示该列的所有值都被汇总。使用ROLLUP选项可以方便地生成分组数据的汇总信息。