当我将显式排序顺序(ASC或DESC)与GROUP BY列表中的列名一起使用时,会对摘要输出产生什么影响?

在这种情况下,如果我们在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)

从输出中可以看出,尽管排序顺序已更改为降序,但汇总行还是出现在要计算汇总行的行之后。

猜你喜欢