重要なお知らせ
【noteへ移行します】最新記事はnoteにて。フォローお願いします!

[SQL] 並び変える・ソートする(ORDER BY)

結果を並び替える・ソートすることができる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があると一番小さい値として扱われる。つまり昇順だと最初、降順だと最後になる。

SQL

Posted by 管理人