SQLのソート・並び替え(ORDER BY)

SQLで取得した結果のデータをソートする方法を紹介します。

データの並び替えの方法

取得するデータを並び替えたい場合はORDER BY句を指定します。

例えば以下のデータで並び替えを行います。

顧客番号 担当部門 名前
0002 20 田中
0003 20 高橋
0001 10 鈴木
0004 10 鈴木

以下のSQLを実行した場合です。デフォルトは昇順です。
明示的に昇順を示す場合はASCをつけることもできます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ ORDER BY 顧客番号

顧客番号 担当部門 名前
0001 10 鈴木
0002 20 田中
0003 20 高橋
0004 10 鈴木

降順での並び替え

降順の場合はDESCをつけます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ ORDER BY 顧客番号 DESC

顧客番号 担当部門 名前
0004 10 鈴木
0003 20 高橋
0002 20 田中
0001 10 鈴木

複数の列での並び替え

並び替えの列をカンマ区切りでSQLを書きます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ ORDER BY 担当部門 DESC,顧客番号

顧客番号 担当部門 名前
0002 20 田中
0003 20 高橋
0001 10 鈴木
0004 10 鈴木

列を番号で指定することもできる

並び替えの列をSELECT句に書かれた番号を指定し並び替えすることが出来ます。
SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ ORDER BY 2 DESC,1

顧客番号 担当部門 名前
0002 20 田中
0003 20 高橋
0001 10 鈴木
0004 10 鈴木

列別名で指定することもできる

並び替えの列をSELECT句に書かれた別名を指定し並び替えすることが出来ます。
SELECT 顧客番号 AS シリアル,担当部門,顧客名 FROM 顧客マスタ ORDER BY シリアル DESC

顧客番号 担当部門 名前
0004 10 鈴木
0003 20 高橋
0002 20 田中
0001 10 鈴木




NULL値の扱い

NULL値が含まれるデータを並び替えると、デフォルトではNULL値は他のどんな値よりも大きいと評価されます。NULL値の順序を指定することもでできます、詳しくは「SQLでNULL値の順序を指定する方法」で紹介しています。

SELECT 顧客番号,担当部門,顧客名 FROM 顧客マスタ ORDER BY 担当部門

顧客番号 担当部門 名前
0001 10 鈴木
0004 10 鈴木
0002 20 田中
0003 20 高橋
0003 NULL 高橋

最後に

並べ替え・ソートは、デフォルトが昇順です。
それからデフォルトでは、NULL値は一番大きいものとして評価されるということは覚えておきましょう。

SQLのソート・並び替え(ORDER BY)” に対して1件のコメントがあります。

この投稿はコメントできません。