【SQL】並び順を指定し、レコードを昇順・降順に並び替える方法


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

昇順(50音順)や降順(逆順)、指定した並び順の順番で、並び替える方法を紹介しています。

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

SQLでレコードを並び替える方法

SELECT文で取得した結果を並び替えるには、ORDER BY句(オーダーバイ)を使います。

ORDER BY句で並び順を指定することで、指定した順番でレコードが並び替わります

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

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

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

レコードを並び替えするSQLサンプル

ここからはSQLサンプルを交えながら、ORDERBY句の具体的な使い方を紹介します。

昇順(50音順)で並び替える方法

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

次のSQLでは、並び順にCOL1を指定し、ASCで昇順としています。結果的にCOL1列の値の昇順にレコードが並び替えされます。

SELECT * FROM tab1 ORDER BY col1 ASC;

ORDERBYの順序指定では、デフォルトが昇順なので、ASCは省略し、次のように書くこともできます。結果は先ほどのSQLと同じでCOL1列の値の昇順となります。

SELECT * FROM tab1 ORDER BY col1;

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

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

次のSQLでは、並び順にCOL1を指定し、DSECで降順としています。結果的に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でSELECTした結果のレコードを並び替えするときはORDERE BY句を使います。

並び替えはデフォルトが昇順で明示的にASCと指定することもできます。降順を指定する場合はDESCと書きます。

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

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