2017-09-13 82 views
0

在MySQL中,如果使用GROUP BY,结果集的顺序是什么,但是ORDER BY是不是指定的?MySQL GROUP BY order when no ORDER BY

我继承了代码之类的查询:

SELECT col1, COUNT(col1) 
FROM table 
GROUP BY col1 

(其实SELECT声明可以比这更复杂,涉及JOIN小号等等,但让我们先从基本原则。)请注意,是ORDER BY

,比方说,SQL Server的BOL,有人告诉我:

GROUP BY子句不下令结果集。使用ORDER BY 子句来排序结果集。

我一直无法找到关于MySQL GROUP BY确实或不承诺从GROUP BY单独的特定排序的声明?如果可以提供MySQL参考来备份任何最受欢迎的答案。

回答

1

manual

如果使用GROUP BY,输出行根据GROUP,如果你有一个ORDER BY为同一列排序BY 列。为了避免 开销分选GROUP BY产生的,添加ORDER BY NULL:

SELECT a, COUNT(b) FROM test_table GROUP BY a ORDER BY NULL; 

依赖隐GROUP BY排序(即,在ASC或DESC指示符的缺席 排序)是弃用。要生成给定排序 订单,请将明确的ASC或DESC指示符用于GROUP BY列,或使用 提供ORDER BY子句。

+0

谢谢,正是我所需要的! – JonBrave