22

「group by」句は、結果がそのキーで順序付けられることを自動的に保証しますか? 言い換えれば、次のように書くだけで十分ですか。

select * 
from table
group by a, b, c

それとも書く必要がありますか

select * 
from table
group by a, b, c
order by a, b, c

たとえば、MySQL ではその必要がないことはわかっていますが、SQL 実装全体で信頼できるかどうかを知りたいです。それは保証されていますか?

4

6 に答える 6

29

group by必ずしもデータを順序付けしません。DB は、できるだけ早くデータを取得し、必要な場合にのみ並べ替えるように設計されています。

したがってorder by、保証された注文が必要な場合は を追加してください。

于 2015-01-26T12:10:20.593 に答える
1

それは絶対にありません。テーブル内のデータが大きくなるにつれて、クエリの 1 つが突然順序付けされていない結果を返すようになったことがあります。

于 2016-03-21T09:17:21.843 に答える
-2

レコード数によって異なります。レコード数が少ない場合、自動的にグループ化されてソートされます。レコードが多い場合 (15 を超える場合)、Order by 句を追加する必要がありました

于 2016-11-25T10:58:00.773 に答える