SQL ORDER BY句で取得したデータを並び替える

「社員マスタ」と「部署マスタ」というテーブルがあります。

社員マスタ
社員コード社員名部署コード年齢
1テスト社員1122
2テスト社員2130
3テスト社員3null20
4テスト社員4230
部署マスタ
部署コード部署名
1開発部
2営業部

全社員の社員名、部署名、年齢を年齢の降順に表示したい。年齢が同じ場合は社員コードの昇順で表示したい。

SQLは下記のようになります。

SELECT T1.社員名
    ,T2.部署名
    ,T1.年齢
FROM 社員マスタ AS T1
    LEFT JOIN 部署マスタ AS T2
    ON T1.部署コード = T2.部署コード
ORDER BY T1.年齢 DESC, T1.社員コード
実行結果
社員名部署名年齢
テスト社員2開発部30
テスト社員4営業部30
テスト社員1開発部22
テスト社員3null20

取得するデータを並び替えるには、ORDER BY句でソートしたいカラムを指定します。

昇順で並び替えたい場合はカラム名のあとにASC、降順に並び替えたい場合はDESCと指定します。

デフォルトは昇順なのでカラム名のあとに何も指定しない場合は昇順でソートされます。

カンマ区切りで複数のカラムを指定することができます。1番目のカラムの値が同じだった場合は、2番目のカラムでソートされます。


関連記事

  • SQL WITH句でVIEWを作成し重複するSQL文をまとめる

    WITH句でVIEWを作成し重複するSQL文をまとめる方法を説明します。WITH句を使えば1つの副問い合わせ(SQL)を複数の箇所で使いまわすことができます。


  • SQL OVER句の分析関数で効率よくデータを集計する

    分析関数を使用すれば、効率よく簡単にデータを集計することができます。集計関数COUNTの後にOVERを指定して、分析関数として集計します。OVERの中のPARTITION BYとORDER BYで分析...


  • SQL ORDER BY句で取得したデータを並び替える

    ORDER BY句で取得したデータを並び替える(ソート)方法について説明します。取得するデータを並び替えるには、ORDER BY句でソートしたいカラムを指定します。


  • SQL oracleでnullを比較する際の注意点

    oracleでnullを扱うときに注意する点をまとめました。値がnullのデータを取得したいときは、イコール(=)ではなくIS NULLで取得する必要があります。nullも含めて取得する場合は、NVL...


  • SQL MERGE文でINSERTとUPDATEを一回で行う

    テーブルにデータがすでに存在している場合は更新(UPDATE)、存在していない場合は登録(INSERT)をしたい場合があると思います。MERGE文を使えば一回のSQLで、INSERTとUPDATEの処...


  • SQL PARTITION BYで効率よくデータを取得する

    PARTITION BYをうまく使用すれば、効率よく簡単にデータを集計だけでなく、取得することができます。PATITION BYで部署コード単位で集計することができるようになります。売上累計の降順で並...


  • SQL INSERT文でデータを登録する

    INSERT文でデータベースに新しいデータを登録する方法を紹介します。テーブルに新しいデータを登録したい場合、以下のようなSQLを実行します。


  • SQL インデックスが効かない場合の原因と対処法

    テーブルにインデックスを張っていても実行計画を見るとなぜかテーブルがフルスキャンされていて「なんで?」となった経験があるかと思います。せっかく張ったインデックスが効かないSQLの実装例と対処法を紹介し...


  • SQL IN句をEXISTS句に変換する方法

    IN句をEXISTS句に変換する方法を紹介します。IN句よりもEXISTS句のほうがパフォーマンスが良くなる場合が多いので、主にレスポンス対策としてこの書き換えを行うことが多いと思います。


  • SQL IN句に1000件以上要素を指定したときのエラーの対処法

    SQLのIN句に1000件以上指定するとORA-01795: リストに指定できる式の最大数は1000です。のエラーが発生してしまいます。EXISTS句に書き換えられる場合は書き換えてしまうのが一番簡単...