ORDER BYを使ったデータのソート
SELECT文で取得したデータは、ORDER BYを使うことで並び順を指定することが
できます。
ORDER BYの使用方法は以下の通りです。
SELECT 列名 FROM 表の名前 WHERE 絞り込み条件
ORDER BY 列名 ASC(DESC); |
基本的にORDER BYはSQL文の最後に指定します。
また、ソートするにあたって昇順(小さい順)に並び替える場合は列名の後にASCを、
降順(大きい順)に並び替える場合は列名の後にDESCを指定します。
※ASCは省略可能です。
使用例1:学生表の年を小さい順にソートする。
SELECT * FROM 学生 WHERE 組 = 'A' ORDER BY 年;
正しくソートされていることが分かります。
ソートに指定する列名は複数指定することが可能で、出力する列に含まれていなくても
指定することができます。
使用例2:学生表の年を小さい順、生年月日を大きい順にソートする。
SELECT 学生番号,年,氏名 FROM 学生 WHERE 組 = 'A' ORDER BY 年,生年月日 DESC;
データによるソートの違い
列のデータ型によって、昇順・降順の基準が違うので注意しましょう。
↓は昇順にソートする場合の各基準です。
データ型 | ソートの基準 |
数値 | 小さい数値から大きい数値にかけてソートされる。 |
文字列 | 辞書順にソートされる。(アルファベット順・50音順) |
日付 | 古い日付から新しい日付にかけてソートされる。 |
NULL | 一番大きい値として扱われる。 |
文字列の「2」と「11」のデータがあった場合、昇順で並べ替えると
「11」、「2」と言う並びで表示されます。
これは、データが数値ではなく文字列のため辞書順で並べ替えられるためです。
SELECT * FROM 学生 WHERE 組 = 'A' ORDER BY 学籍番号;