【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を記述することを覚えておきましょう。さらに、カンマで区切って複数の列を指定することで、優先順位をつけた、より詳細な並び替えも可能です。

【SQL】ORDER BY句の書き方と使い方の基本 | いっしー@Webエンジニア