实际上,ROLLUP和ORDER BY在MySQL中是互斥的,因此在查询中同时使用它们不是一个好习惯。但是,如果我们在ORDER BY中使用ROLLUP,则主要缺点是摘要行将与它们所计算的行一起进行排序。还需要注意的是,排序顺序将决定摘要行的位置,这一点也很重要。
摘要行将在升序的开头和降序的结尾。请看以下示例以更清楚地理解它-
mysql> Select * from (Select sr, SUM(PRICE) AS PRICE from ratelist GROUP BY sr WITH ROLLUP) AS Price ORDER BY Sr DESC; +------+-------+ | sr | PRICE | +------+-------+ | 5 | 250 | | 4 | 850 | | 3 | 1005 | | 2 | 630 | | 1 | 502 | | NULL | 3237 | +------+-------+ 6 rows in set (0.00 sec) mysql> Select * from (Select sr, SUM(PRICE) AS PRICE from ratelist GROUP BY sr WITH ROLLUP) AS Price ORDER BY Sr ASC; +------+-------+ | sr | PRICE | +------+-------+ | NULL | 3237 | | 1 | 502 | | 2 | 630 | | 3 | 1005 | | 4 | 850 | | 5 | 250 | +------+-------+ 6 rows in set (0.01 sec)