【MySQL】order by句で昇順・降順を指定する(複数ある場合の優先順位も解説)
この記事ではorder by句で昇順・降順を指定する方法について解説します。
order by 項目 ASC | 項目を昇順に並び替える |
order by 項目 DESC | 項目を降順に並び替える |
ASC、DESCは付けない場合デフォルトで昇順となります。
DBの状態を以下とします
select * from 昇順降順テスト;
番号1 | 番号2 | 文字列 |
1 | 3 | テスト5 |
2 | 5 | テスト4 |
4 | 0 | テスト3 |
5 | 1 | テスト1 |
7 | 3 | テスト2 |
番号2にて昇順に並び替えるには以下のようにします
select * from 昇順降順テスト order by 番号2 ASC;
番号1 | 番号2 | 文字列 |
4 | 0 | テスト3 |
5 | 1 | テスト1 |
1 | 3 | テスト5 |
7 | 3 | テスト2 |
2 | 5 | テスト4 |
番号2で昇順に並び替えが確認できます。
番号2にて降順に並び替えるには以下のようにします
select * from 昇順降順テスト order by 番号2 DESC;
番号1 | 番号2 | 文字列 |
2 | 5 | テスト4 |
1 | 3 | テスト5 |
7 | 3 | テスト2 |
5 | 1 | テスト1 |
4 | 0 | テスト3 |
番号2で降順に並び替えが確認できます。
昇順・降順を複数にて実施する
order byにて並び換えを実施する際に複数にて並び替えを実施するには「, 」でつなげてあげます。
その際の優先順位は、左側から優先順位が高く並び替え処理が実行されます。
select * from 昇順降順テスト order by 番号2 DESC;
番号1 | 番号2 | 文字列 |
2 | 5 | テスト4 |
7 | 3 | テスト2 |
1 | 3 | テスト5 |
5 | 1 | テスト1 |
4 | 0 | テスト3 |
上記の取得結果から、番号2の降順で並び替えを実行しており、番号2に同一の値が存在した場合、番号1について降順にて並び替えが実行されてます。
nullやカラの並び替え
昇順にて並び換える場合の優先順位として、null、カラ、0の順にて並び換えられることが確認できます。
select * from 昇順降順テスト order by 番号2 ASC;
番号1 | 番号2 | 文字列 |
0 | « NULL » | « NULL » |
1 | テスト5 | |
7 | 0 | テスト2 |
5 | 1 | テスト1 |
select * from 昇順降順テスト order by 番号2 ASC;
番号1 | 番号2 | 文字列 |
5 | 1 | テスト1 |
7 | 0 | テスト2 |
1 | テスト5 | |
0 | « NULL » | « NULL » |
SQLの記事の一覧はSQL にまとめてあります