[SQL] 並び変える・ソートする(ORDER BY)
Contents
結果を並び替える・ソートすることができるORDER BY
クエリの最後(LIMITの前)にORDER BYを付け加えると指定したカラムの順番に並び替える。「ソートする」とも言う。Excelの「並び替え」と同じ。特に指定しなければ昇順(数字の小さい順)になる。
基本ルールは簡単で、FROMの後に「WHERE 条件」を付ける。
SELECT * FROM テーブル ORDER BY (カラム)
サンプルデータ
次のファイルをDLしてコンソールにコピーする。
1つのカラムを指定して並び変える
まずは1つのカラムの場合を見る。例えばidで並び替える場合はORDER BY idとする。何も指定しなければ昇順(小さい順)に並び代わる。
SELECT id,name FROM di_sql_sample01 ORDER BY id
A→Zや0→9で並び替えるのと同じ
id | name |
1 | 佐藤 |
2 | 斎藤 |
3 | 鈴木 |
4 | 佐藤 |
5 | 高橋 |
6 | 田中 |
7 | 伊藤 |
降順(大きい順)で並び変える(DESC)
最後にDESCを付けるとそのカラムを降順(大きい順)で並び替える。DESCはDESCENDINGの略。
SELECT id,name FROM di_sql_sample01 ORDER BY id DESC
id | name |
7 | 伊藤 |
6 | 田中 |
5 | 高橋 |
4 | 佐藤 |
3 | 鈴木 |
2 | 斎藤 |
1 | 佐藤 |
昇順(小さい順)で並び変える(ASC)
ASCを書けば昇順(小さい順)であることが明示できるが、書かなければ昇順になる。結果は「1つのカラムを指定して並び変える」と同じになるので割愛する。
経験上書いている人は見たことが無い。なおASCはASCENDINGの略。
複数のカラムで並び替える
複数のカラムを指定して並び替えることもできる。それぞれのカラムで個別に昇順、降順を指定することもできる。複数のカラムで並び替える場合カラムはカンマでつなぐ。
性別を降順、名前を昇順で並び替えると以下のようになる。
SELECT id,name FROM di_sql_sample01 ORDER BY sex DESC , name
id | name |
7 | 伊藤 |
1 | 佐藤 |
6 | 田中 |
4 | 佐藤 |
2 | 斎藤 |
3 | 鈴木 |
5 | 高橋 |
NULLがある場合の並び替え
NULLがあると一番小さい値として扱われる。つまり昇順だと最初、降順だと最後になる。