HexWolf Blog

SQL学習シリーズ③:ORDER BY句

はじめに

WHERE句の次はどうするか考えると、GROUP BY句と言いたいですがまずは並び替えですね。
というわけでORDER BY句です。

基本構文

SELECT name, age FROM users ORDER BY age DESC;

基本的にはASC(昇順)処理ですがDESCと書くと降順になります。

概要

ORDER BY句はSELECT文の中で最後尾に位置づけておくデータの並び替えに関わります。

SQL文は特に明示しない限りは常に同じ並び順になるとは限りません。idも順に並ぶかと言えばそんあこともありません。
細かい話は分かりませんが、RDBMS自体の都合としてインデックスや挿入順、メモリキャッシュの都合等で変わるようです。

そのため、RDBMSにとっては読みやすいテーブルであっても人間には読みづらいなんて状況は頻繁に起こります。

そこでORDER BY句によって並び順を整えることによって人間が扱いやすいデータ群にするわけです。

またORDER BY句は,によって複数のソート条件を作ることができるので求める形を追い求めて行きましょう

LIMIT句

ORDER BY句とは直接関係ないですが、並び替えることによって抽出したい数というのを明示しやすくなります。

そこで使うのがLIMIT句でありLIMIT 10などと入れることによってデータ数をその数に制限することができます。

ちなみにいくつかのDB管理ソフトによっては暗黙的にLIMIT 1000等を入れていたりして、データ量によるクラッシュを防ぐ処理が施されています。

私はpostgreSQLしか使ったことがないので分かりませんが、OracleではどうやらLIMIT句はなく、代わりにFETCH FIRST句なるものがあるようです。

使うDBによっては仕様が異なるみたいなので注意して行きたいですね。