2017-09-13 18 views
0

MySQLでは、GROUP BYが使用されていて、ORDER BYではない場合は、が指定されていません。ORDER BY

私のようなクエリを使用してコードを継承しています

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

(実際SELECT文はSなどJOINを含む、それよりもはるかに複雑であってもよいが、のが基本原則から始めましょうことができます。)なお、そこにいいえORDER BYです。

で、たとえば、SQL ServerのBOL、私は聞いています:

GROUP BY句は、結果セットを注文しません。結果セットを注文するには、ORDER BY 句を使用します。

GROUP BYは、GROUP BYからの特定の注文を行うかどうかについての声明を見つけることができませんでしたか?最も歓迎される答えをバックアップするためにMySQLのリファレンスを提供できる場合。 manualから

答えて

1

あなたはGROUP BYを使用している場合は、同じ列のため、ORDER BYを持っていたかのように、出力行は GROUP BY列に基づいてソートされています。 、GROUP BYが生成するソート オーバーヘッドを回避するNULL、ORDER BYを追加する

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

暗黙GROUPに依存(つまり、ASCまたはDESC指示子の不在 にソート)ソートすることによってを推奨されていません。指定されたソート を生成するには、GROUP BY列に明示的なASCまたはDESC指定子を使用するか、 にORDER BY句を指定します。

+0

ありがとう、ちょうど私が必要なもの! – JonBrave