在这种情况下,如果我们在GROUP BY列表中使用带有列名的显式排序顺序(ASC或DESC)以及“ WITH ROLLUP”修饰符,则由ROLLUP添加的摘要行仍会出现在它们根据其计算的行之后,无论排序。
我们知道默认排序顺序是递增的,因此在下面的示例中,如果我们不使用任何显式排序顺序,则输出将如下所示:
mysql> Select sr, SUM(Price) AS Price from ratelist Group by sr with rollup; +-----+-------+ | sr | Price | +-----+-------+ | 1 | 502 | | 2 | 630 | | 3 | 1005 | | 4 | 850 | | 5 | 250 | |NULL | 3237 | +-----+-------+ 6 rows in set (0.00 sec)
现在,在将排序顺序定义为DESC之后,我们将从上述相同查询中获取输出,如下所示:
mysql> Select sr, SUM(Price) AS Price from ratelist Group by sr DESC with rollup; +-----+-------+ | sr | Price | +-----+-------+ | 5 | 250 | | 4 | 850 | | 3 | 1005 | | 2 | 630 | | 1 | 502 | |NULL | 3237 | +-----+-------+ 6 rows in set (0.00 sec)
从输出中可以看出,尽管排序顺序已更改为降序,但汇总行还是出现在要计算汇总行的行之后。