【SQL】ORDER BY句の書き方と使い方の基本
この記事では、SQLのORDER BY句を使い、データベースから取得したデータを並び替える方法を解説します。指定した列の値を基準に、昇順(小さい順)や降順(大きい順)に整列させる基本構文を学びます。さらに、複数の列を組み合わせて、より複雑な条件で並び替える応用的な使い方もサンプルコードと共に紹介します。
開発環境
- OS: Windows10
- DatabaseGUI: TablePlus
- MySQL: 8.0.42
ORDER BY句とは
ORDER BY句は、SELECT文を使ってデータベースから取得したデータを、特定の列(カラム)の値を基準にして並び替えるためのSQLの命令です。
データベースからデータを取り出すと、通常は登録された順番など、必ずしも意図した順序で表示されるわけではありません。 例えば、社員のリストを取得した際に、社員番号が若い順や、名前の五十音順で表示したい場合があります。
そのような時にORDER BY句を使うことで、取得した結果を「年齢の若い順」や「価格の高い順」など、指定したルールに従ってきれいに整列させることができます。 これにより、データが見やすくなり、情報を探しやすくなるという利点があります。
ORDER BY句の基本構文
ORDER BY句は、SELECT文で取得したデータの結果を、指定したカラム(列)の値に基づいて並べ替えるために使用します。
ORDER BYの後には、並べ替えの基準となるカラム名を記述します。さらに、その後に並べ替えの順序を指定することができます。
- ASC: 昇順(Ascending)を意味し、小さい値から大きい値へ(例: 1, 2, 3... や A, B, C...)並べ替えます。
ASCは省略することが可能で、省略した場合は昇順で並べ替えられます。 - DESC: 降順(Descending)を意味し、大きい値から小さい値へ(例: 10, 9, 8... や Z, Y, X...)並べ替えます。
1SELECT 2 カラム名, 3 カラム名, 4 ... 5FROM 6 テーブル名 7ORDER BY 8 カラム名 [ASC|DESC];
サンプルコード
データベースから取得したデータの表示順を制御するには、SELECT文の末尾にORDER BY句を追加します。これにより、指定したカラムの値を基準に、結果を並び替えることができます。
sql/chapter05/01.sql
ASCを指定すると、データを昇順(小さい値から大きい値の順)に並び替えることができます。
1-- ASC(昇順 / 小さい順) 2SELECT 3 * 4FROM 5 students 6ORDER BY 7 class_id ASC;
ASCは省略することが可能です。並び替えの順序を指定しない場合、デフォルトで昇順として扱われます。したがって、以下のコードは上のコードと全く同じ結果を返します。
1-- ASCは省略可能 2SELECT 3 * 4FROM 5 students 6ORDER BY 7 class_id;
sql/chapter05/02.sql
DESCを指定すると、データを降順(大きい値から小さい値の順)に並び替えることができます。降順にしたい場合は、必ずDESCを明記する必要があります。
1-- DESC(降順 / 大きい順) 2SELECT 3 * 4FROM 5 students 6ORDER BY 7 class_id DESC;
sql/chapter05/03.sql
ORDER BY句では、カンマ(,)で区切ることで、複数のカラムを並び替えの基準として指定できます。並び替えは、先に指定したカラムが優先されます。
以下の例では、まずclass_idを基準に降順で並び替えます。もしclass_idが同じ値のデータが複数存在した場合は、その中でさらにidを基準に昇順で並び替えます。
1-- 並び替えを複数指定 2SELECT 3 * 4FROM 5 students 6ORDER BY 7 class_id DESC, 8 id ASC;
おわりに
今回は、SQLのORDER BY句を使い、取得したデータを指定した列の順に並び替える方法を学習しました。昇順の場合はASCを記述するか省略し、降順の場合は必ずDESCを記述することを覚えておきましょう。さらに、カンマで区切って複数の列を指定することで、優先順位をつけた、より詳細な並び替えも可能です。