ORDER BY句 : 解説
ORDER BY句は、指定した列の値により、問合せ結果を並び替えるものです。並べ替えのことをソート(SORT)と呼びます。RDBMS製品により異なりますが、多くの製品は結果の並べ方を指定しないとデータの挿入した順に並ぶ製品が多いようです。そのため、問合せにおいて、一定の並べ方のデータが必要な場合には、ORDER BY句で結果の並べ方を指定します。
ORDER BY句の記述は、並べ替えの基準となる列を指定するだけです。複数の列を指定したいときには、「,」(カンマ)で区切って指定します。複数の列を指定した場合には、まず最初に記述した列の値で並べ替えが行われ、並べ替えた列に同じ値があるものを、2つ目に指定した列の値で並べ替えます。
並べ替えを行うときに、順番をどうするかを指定できます。並べ方の指定は列の指定の後ろに次のキーワードを指定します。
- ASC : 小さいもの順 (昇順)
- DESC ; 大きいもの順 (降順)
何も記述しない場合には、昇順が指定されるので、「ASC」の記述を行うのは、SQL文がわかりやすいように明示的に指定するときくらいでしょう。昇順、降順は英数字なら数字の順番やアルファベット順になりますが、日本語などの場合には、文字コード順になります。データベースにどの文字コードでデータを入れるかによって並び順が変わる可能性があります。
ORDER BY句 : NULLのソート順
NULLのソート順は、RDBMS製品により扱いが異なります。
- MS-SQL Server、MS-Accessでは、NULLは最も小さい値として扱われる
- ORACLEでは最も大きい値として扱われる
ORDER BY句 : 使用例
「入社」列を昇順に並べ替えて、さらに「年齢」列で降順に並べ替える場合には、次のように記述します。
SQL文 SELECT * FROM 社員 ORDER BY 入社, 年齢 DESC;
実行結果
名前 | 年齢 | 入社 |
---|---|---|
小林守 | 35 | 1993 |
山田太郎 | 28 | 1998 |
斉藤隆 | 39 | 1999 |
高橋綾子 | 28 | 1999 |
森毅 | 27 | 1999 |
佐藤花子 | 24 | 2000 |
表:社員
名前 | 年齢 | 入社 |
---|---|---|
山田太郎 | 28 | 1998 |
佐藤花子 | 24 | 2000 |
小林守 | 35 | 1993 |
斉藤隆 | 39 | 1999 |
森毅 | 27 | 1999 |
高橋綾子 | 28 | 1999 |
関連リンク
【SQLの基礎知識⑫】 結果を並び替える(ORDER BY句)
結果の並べ替え(ORDER BY句)の基本を習得できます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
SQLリファレンスTOPページ
SQLリファレンス
データの操作、演算子、関数を解説します。