2017-09-13 123 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