エンジニアの将来って?

現在7年目のCOBOL→Java→C#エンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

【SQL Server】ORDER BYを複数のカラムに対してソートするやり方を解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL ServerでORDER BY複数のカラムに対してソートするやり方を解説します。

スポンサーリンク

 

前提条件

この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

ORDER BYとは

ORDER BYは、SELECTした結果のデータのソートをするときに使います。

ORDER BYについては、こちらの記事をご参考ください。

www.tairax.com

↑の記事では、ORDER BYを1つのカラムに対してのみ行っていました。
この記事では、少し応用編としてORDER BYで複数のカラムに対してソートします。

複数のカラムでORDER BYをする構文

基本的な構文は下記になります。

SELECT カラム1
      ,カラム2
      ,カラム3
      ,…
  FROM テーブル名
  ORDER BY ソートしたいカラム [ASCまたはDESC],
           ソートしたいカラム [ASCまたはDESC],
           …

複数のカラムでORDER BYをしたときの優先順

複数のカラムでORDER BYをしたときの優先度は、ORDER BYに宣言したカラムが近ければ近いほど優先されます。
つまり優先度はこんな感じになります。

f:id:Tairax:20191016221831p:plain

では、実際に使ってみましょう!

複数のカラムでORDER BYするやり方で解説に使うテーブル

複数のカラムでORDER BYするやり方で解説に使うテーブルは、【Person】テーブルです。

f:id:Tairax:20191016222317p:plain

id name age job_change
1 kei 32 Knigt
2 kiki 32 cook
3 apple 10 child
4 for 10 child

↑のテーブルに対して、いろいろORDER BYしていきます!

複数のカラムでORDER BYしたサンプル1

f:id:Tairax:20191016224159p:plain

SELECT [id]
      ,[name]
      ,[age]
      ,[job_change]
  FROM [Test].[dbo].[Person]
  ORDER BY [age] ASC,
           [name] DESC

意味としては、ORDER BYで最初に宣言しているのがageなので、まずageのカラムで昇順にソートされます。
次に宣言しているnameのカラムで降順にソートされています。

結果は↓になります。

f:id:Tairax:20191016224424p:plain

id name age job_change
4 for 10 child
3 apple 10 child
2 kiki 32 cook
1 kei 32 Knigt

想定通りになりました!

複数のカラムでORDER BYしたサンプル2

f:id:Tairax:20191017080636p:plain

SELECT [id]
      ,[name]
      ,[age]
      ,[job_change]
  FROM [Test].[dbo].[Person]
  ORDER BY [age] ASC,
           [id] ASC

意味としては、ORDER BYで最初に宣言しているのがageなので、まずageのカラムで昇順にソートされます。
次に宣言しているidのカラムで昇順にソートされています。

結果は↓になります。

f:id:Tairax:20191017080857p:plain

id name age job_change
3 apple 10 child
4 for 10 child
1 kei 32 Knigt
2 kiki 32 cook

想定通りになりました!

まとめ:ORDER BYを複数のカラムに対してソートしてみよう!

以上がORDER BYを複数のカラムに対してソートするやり方です。
まとめなので、やり方を振り返ります。

構文は下記です。

SELECT カラム1
      ,カラム2
      ,カラム3
      ,…
  FROM テーブル名
  ORDER BY ソートしたいカラム [ASCまたはDESC],
           ソートしたいカラム [ASCまたはDESC],
           …

複数のカラムに対してORDER BYしたときの優先順は、ORDER BYに近ければ近いほど優先度が高いです。

f:id:Tairax:20191016221831p:plain

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

他にもSQL Serverについて記事を書いています。
良ければこちらもご参考ください。

【SQL Server】データベースのバックアップファイルを復元する方法を解説します

【SQL Server】大文字から小文字に変換するLOWER関数について解説します

【SQL Server】テーブルの列名を変更するsp_renameを解説します