【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文の書き方:サンプル多数あり」で解説していますのでぜひ参考にしてください。