OracleのORDER BYを使った並び替えです。
昇順は小さい順に並びます。例えば、1から10までの数値が存在する場合、昇順に並び替えると、1,2,3….10という順番に並びます。
降順は昇順の逆で、大きい順に並びます。1から10までの数値が存在する場合、降順に並び替えると、10,9,8…1という順番に並びます。
昇順並び替え
昇順で並び替える場合、ORDER BYを使用します。明示的に記述をするのであれば、ASCを使用します。次のSQLはTBL_HOGEテーブルのCOL_1カラムを昇順に並び替える例文です。COL_1はTBL_HOGEテーブルの一番先頭のカラムとします。
SELECT * FROM TBL_HOGE ORDER BY COL_1; --ASCあり SELECT * FROM TBL_HOGE ORDER BY COL_1 ASC; --カラム番号指定 SELECT * FROM TBL_HOGE ORDER BY 1;
ASCは書かなくても問題ありません。また、一番下の「ORDER BY 1」という記述ですが、これは「1番目のカラム」という意味です。
実際に試してみましょう。使用するテストデータはこちらに用意しています。
今回は果物テーブル(TAB_PRODUCT_FRUIT)を使用します。果物テーブルのCODEで並び替えてみます。現状はこの状態です。
これをCODEの昇順に並び替えます。
SELECT CODE ,NAME FROM TAB_PRODUCT_FRUIT ORDER BY CODE;
実行結果を見てみます。
ちゃんとCODEの昇順で並び替えられています。
また、ORDER BYでは複数カラムを指定して並び替えることも出来ます。
SELECT * FROM TBL_HOGE ORDER BY COL_1,COL_2;
こちらも実行してみます。まずは現状を確認します。
見事にバラバラです。FRUIT_COLOR_CD、CODEの順に並び替えてみましょう。
SELECT CODE ,NAME ,FRUIT_COLOR_CD FROM TAB_PRODUCT_FRUIT ORDER BY FRUIT_COLOR_CD ,CODE;
ちゃんと並び変わっていますね。
降順並び替え
降順で並び替える場合、ORDER BYで並び替えるカラムの後にDESCを明示的に記述します。
SELECT * FROM TBL_HOGE ORDER BY COL_1 DESC; --カラム番号指定 SELECT * FROM TBL_HOGE ORDER BY 1 DESC;
実際に試してみましょう。先ほど使用した果物テーブル(TAB_PRODUCT_FRUIT)のCODEを降順に並び替えます。
SELECT CODE ,NAME FROM TAB_PRODUCT_FRUIT ORDER BY CODE DESC;
実行してみましょう。
CODEが降順に並び変わりました。
降順で複数カラムを並び替える場合、並び替えたいカラムの後にそれぞれDESCを明記する必要があります。
SELECT * FROM TBL_HOGE ORDER BY COL_1 DESC COL_2 DESC;
実際に試してみます。果物テーブル(TAB_PRODUCT_FRUIT)のFRUIT_COLOR_CD、CODEを降順に並び替えてみましょう。
SELECT CODE ,NAME ,FRUIT_COLOR_CD FROM TAB_PRODUCT_FRUIT ORDER BY FRUIT_COLOR_CD DESC ,CODE DESC;
ちなみに、ORDER BY句の全てにDESCを付けない場合、DESCを付けていないカラムは昇順で並び替えられます。
TAB_PRODUCT_FRUITは降順で並んでいますが、CODEは昇順で並んでいます。
参考サイト
.