没有ORDER BY的MySQL GROUP BY命令

时间:2017-09-13 09:06:13

标签: mysql group-by sql-order-by

在MySQL中,如果使用GROUP BY但<{1}}未指定

,则结果集的顺序是什么?

我使用以下查询继承了代码:

ORDER BY

(实际上SELECT col1, COUNT(col1) FROM table GROUP BY col1 语句可能比SELECT语句复杂得多,涉及JOIN等等,但让我们从基本原则开始。)注意没有{{ 1}}。

在SQL Server BOL中,我被告知:

  

GROUP BY子句不对结果集进行排序。使用ORDER BY   用于对结果集进行排序的子句。

我一直无法找到关于MySQL ORDER BY是否承诺单独从GROUP BY做出特定排序的陈述?如果可以提供MySQL参考来备份任何最受欢迎的答案。

1 个答案:

答案 0 :(得分:1)

来自manual

  

如果使用GROUP BY,则输出行将根据GROUP BY进行排序   列,就好像您有相同列的ORDER BY一样。避免   对GROUP BY生成的排序开销,添加ORDER BY NULL:

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

依赖于隐式GROUP BY排序(即在缺席时进行排序)   ASC或DESC指示符)已弃用。生成给定的排序   对于GROUP BY列或使用明确的ASC或DESC指示符   提供ORDER BY子句。