【SQL】昇順・降順・複数条件でソートする方法


本記事では、ORACLEデータベースのSQLで、ORDER BY句を使ってレコードをソートする方法をサンプルを交えて詳しく解説をしております。

昇順(50音順)や降順(逆順)、複数条件を指定した順番でソートを紹介しています。

SELECT文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】SELECT文の書き方:サンプル多数あり

レコードをソートする方法

SELECT文で取得した結果をORDER BY句(オーダーバイ)を指定することで、ソートすることが出来ます。

基本的な書き方は次の通りで、ORDER BY句を一番後ろに付け加え、並び替えしたい列を指定します。

並び替えの順序は指定しなければデフォルトでASC、昇順(50音順)となります。降順(逆順)にしたい場合は、DESCを指定します。

SELECT 列名 FROM テーブル名 ORDER BY 列名 [ASCまたはDESC][,列名 [ASCまたはDESC]・・・]

レコードをソートするSQLサンプル

ここからはサンプルのSQLを交えながら、レコードをソートする方法を解説していきます。

昇順(50音順)でソートする方法

SQLで取得したレコードを昇順で並び替えたい場合は、ASCを指定します。

次のSQLでは、COL1列の値で昇順にソートしています。

SELECT * FROM tab1 ORDER BY col1 ASC;

レコードのソート順序はデフォルトで、昇順なので、ASCは省略し、次のように書くこともできます。

SELECT * FROM tab1 ORDER BY col1;

降順(逆順)でソートする方法

SQLで取得したレコードを降順で並び替えたい場合は、DESCを指定します。

次のSQLでは、COL1列の値で降順にソートしています。

SELECT * FROM tab1 ORDER BY col1 DESC;

複数条件を指定してソートする方法

SQLで取得したレコードを複数条件を指定してソートしたい場合は、カンマ区切りで列を追加します。

次のSQLでは、COL1列の値で昇順にソートした後、COL2の値の降順にソートしています。

SELECT * FROM tab1 ORDER BY col1 ASC,col2 DESC;

次のSQLのように、ソート順は3つ、4つと追加することが出来ます。

SELECT * FROM tab1 ORDER BY col1 ASC,col2 DESC,col3 DESC;
SELECT * FROM tab1 ORDER BY col1 ASC,col2 DESC,col3 DESC,col4 ASC;

まとめ

SQLでレコードをソートするときはORDERE BY句を使います。

ソート順のデフォルトは昇順、明示的にASCと指定することもできます。降順を指定する場合はDESCと書きます。

複数の列の値を使ってソートさせたい場合は、カンマ区切りでカラム名を追加します。

この他にも、SELECT文には様々な機能や使い方があります。
詳しくは「【SQL】SELECT文の書き方:サンプル多数あり」で解説していますのでぜひ参考にしてください。