記事内に広告が含まれています。

【Oracle】ORDER BYを使った並び替え(昇順・降順のソート)

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番目のカラム」という意味です。

実際に試してみましょう。使用するテストデータはこちらに用意しています。

SQLのテストデータ置き場
このページは当ブログのOracle記事で使用しているテストデータの置き場です。気が向いたらテストデータを増やしていくつもりです。

今回は果物テーブル(TAB_PRODUCT_FRUIT)を使用します。果物テーブルのCODEで並び替えてみます。現状はこの状態です。

f:id:neko_britannia:20201018215016j:plain

これをCODEの昇順に並び替えます。

SELECT CODE
      ,NAME
  FROM TAB_PRODUCT_FRUIT
ORDER BY CODE;

実行結果を見てみます。

f:id:neko_britannia:20201018215242j:plain

ちゃんとCODEの昇順で並び替えられています。

また、ORDER BYでは複数カラムを指定して並び替えることも出来ます。

SELECT *
  FROM TBL_HOGE
 ORDER BY COL_1,COL_2;

こちらも実行してみます。まずは現状を確認します。

f:id:neko_britannia:20201018215444j:plain

見事にバラバラです。FRUIT_COLOR_CD、CODEの順に並び替えてみましょう。

SELECT CODE
      ,NAME
	  ,FRUIT_COLOR_CD
  FROM TAB_PRODUCT_FRUIT
ORDER BY FRUIT_COLOR_CD
        ,CODE;

f:id:neko_britannia:20201018215658j:plain

ちゃんと並び変わっていますね。

【スポンサーリンク】

降順並び替え

降順で並び替える場合、ORDER BYで並び替えるカラムの後にDESCを明示的に記述します。

SELECT *
  FROM TBL_HOGE
 ORDER BY COL_1 DESC;

--カラム番号指定
SELECT *
  FROM TBL_HOGE
 ORDER BY 1 DESC;

実際に試してみましょう。先ほど使用した果物テーブル(TAB_PRODUCT_FRUIT)のCODEを降順に並び替えます。

f:id:neko_britannia:20201018215016j:plain

SELECT CODE
      ,NAME
  FROM TAB_PRODUCT_FRUIT
ORDER BY CODE DESC;

実行してみましょう。

f:id:neko_britannia:20201018220313j:plain

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;

f:id:neko_britannia:20201018220901j:plain

ちなみに、ORDER BY句の全てにDESCを付けない場合、DESCを付けていないカラムは昇順で並び替えられます。

f:id:neko_britannia:20201018221022j:plain

TAB_PRODUCT_FRUITは降順で並んでいますが、CODEは昇順で並んでいます。

【スポンサーリンク】

参考サイト

ORDER BY句
The ORDER BY clause is used to control the order of result records.

.