【MySQL】order by句で昇順・降順を指定する(複数ある場合の優先順位も解説)

【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 にまとめてあります

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP