MySQL的WITH ROLLUP選項可以在GROUP BY子句后使用,以生成一個額外的匯總行。這個匯總行會顯示每個組的總計,以及所有組的總計(如果指定了GROUP BY子句)。
以下是使用WITH ROLLUP的基本語法:
SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
WITH ROLLUP;
在這個例子中,column1
、column2
等是你想要根據其進行分組的列。table_name
是你要查詢的表名。
使用WITH ROLLUP時,你會得到以下結果:
下面是一個具體的例子。假設我們有一個名為sales
的表,其中包含以下數據:
+------------+--------+-------+
| product_id | region | sales |
+------------+--------+-------+
| 1 | North | 100 |
| 1 | South | 200 |
| 2 | North | 150 |
| 2 | South | 50 |
| 3 | North | 75 |
| 3 | South | 125 |
+------------+--------+-------+
如果我們執行以下查詢:
SELECT product_id, region, SUM(sales)
FROM sales
GROUP BY product_id, region
WITH ROLLUP;
我們會得到以下結果:
+------------+--------+-------+
| product_id | region | sales |
+------------+--------+-------+
| 1 | North | 100 |
| 1 | South | 200 |
| 1 | NULL | 300 | -- North的總計
| 2 | North | 150 |
| 2 | South | 50 |
| 2 | NULL | 200 | -- South的總計
| 3 | North | 75 |
| 3 | South | 125 |
| 3 | NULL | 200 | -- North的總計
| NULL | NULL | 600 | -- 所有產品的總計
+------------+--------+-------+
注意,當分組列中有NULL值時,WITH ROLLUP會為這些NULL值生成一個單獨的行。