検索

キーワード


【SQL】ORDER BY句の使い方

  • 公開日:2020-10-24 20:46:01
  • 最終更新日:2020-12-26 23:00:03
【SQL】ORDER BY句の使い方

こんにちは。駆け出しプログラマーの松下です!

SQLで順番をかえる際に用いるORDER BY句について説明します。

SQLについて学び始めたばかりという方の参考になれば幸いです。


例ではMicrosoft SQL Serverを使用し、あらかじめ作成した下記の"employees"テーブルからのデータ取得をします。

employees テーブル


ORDER BYの使い方

ORDER BYはSQLでソート順を指定するときに使います。

主にSELECT文などと組み合わせて検索したデータを並び替えます。

SELECT カラム名 
FROM テーブル名 
ORDER BY ソートするカラム名 ASCもしくはDESC;

ORDER BYの後ろに並び替えたい列名を指定し、昇順ならASC、降順ならDESCを記述します。

なお、デフォルトでは昇順となっているのでASCは省略可能です。

SELECT 社員番号,名前,年齢 FROM employees ORDER BY 社員番号 DESC;
SELECT 社員番号,名前,年齢 FROM employees ORDER BY 年齢;

ORDER BY句の使用例

前者では社員番号を指定してDESCなので、社員番号が大きい方から小さくなっていくように並び替わりました。

後者では年齢を指定しその後ろに記述がないので、デフォルトの昇順で若い方から順に並んでいます。


複数のカラムを指定してソートする

ORDER BYの後ろの要素は「,」(カンマ)で区切り複数指定することができます。

その場合、1つ目で指定された条件でソートし、同じ値のものが2つ目の条件で並び替えられます。

SELECT * FROM employees ORDER BY 年齢,給料 DESC;

複数のカラムを指定してソートした例

上の例では、まず年齢の昇順でソートされ34歳が3人いるなかで、給料の降順で並び替えられてます。


SELECT * FROM employees ORDER BY 給料 DESC,年齢 ASC;

ソートに使うカラムの順番を入れ替えた例

年齢が昇順で給料が降順という点では先ほどと同じですが、指定されている順番は給料が先になっています。

そのため先に給料の高い順で並び、360000で同じ2人の並びが年齢の昇順でソートされています。


WHERE句と組み合わせ

条件を指定するWHEREも同時に指定できます。

同時に使用するときは先にWHERE句を書く必要があります。

SELECT 社員番号,名前,生年月日
FROM employees
WHERE 性別 = '男'
ORDER BY 生年月日 ASC;

SELECT *
FROM employees
WHERE 名前 LIKE '_藤%'
ORDER BY 年齢 DESC;

WHERE句とORDER BY句を入れ替えた例

前者では性別が男のデータが取得され、生年月日の昇順で並び替えられてます。

後者ではLIKEで'_藤%'を指定したので、〇藤から始まる名前が年齢の降順で並んでいます。


列名を省略する

SELECTに記述された順番の数字を、ORDER BYで指定することで列名を省略できます。

SELECT 社員番号,名前,年齢
FROM employees
ORDER BY 3 ASC,1 DESC;

列名の代わりに数字を使って列を指定した例

上の例では社員番号が1、名前が2、年齢が3として使用できます。

3の年齢の昇順で並べ、同じ年齢の3人をさらに社員番号の降順で並び替えています。



関連記事:LIKE句について  SELECT文について



【著者】

松下

今年文系未経験からプログラマとなりました。 同じ初心者の方に分かりやすいよう簡潔な記事を心がけていきます。 趣味はサッカー観戦と洋服です。

よく読まれている記事