エンジニアの将来って?

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

【SQL Server】先頭から指定した行数を取得するTOP句について解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL Serverの先頭から指定した行数を取得するTOP句について解説します。

スポンサーリンク

 

前提条件

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

www.tairax.com

TOP句とは

TOP句とは、先頭から指定した行数を取得します。

TOP (Transact-SQL)
適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data Warehouse
SQL Server 2017 で、クエリの結果セットとして返される行を、指定した行の数または割合に制限します。
TOP と ORDER BY 句を使用すると、結果セットは並べ替えられた行の先頭の N 行に制限されます。
それ以外の場合、TOP では特定の順序になっていない先頭の N 行が返されます。
この句を使用して、SELECT ステートメントから返される行の数を指定します。
または、TOP を使用して、INSERT、UPDATE、MERGE、DELETE ステートメントによって影響を受ける行数を指定します。

TOP (Transact-SQL) - SQL Server | Microsoft Docsから引用させて頂きました

TOP句ORDER BYと組み合わせると便利です。
ORDER BYについては、こちらの記事をご参考ください。

www.tairax.com

TOP句の使い方

TOP句はSELECTの前にカッコでくくって取得したい行数の数字を設定してあげればOKです。
以下のように使います。

SELECT TOP (取得したい行数) [フィールド1]
      ,[フィールド2]
      ,[フィールド3]
  FROM [テーブル名]

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

TOP句の解説に使うテーブル

TOP句の解説に使うテーブルは、【Person】テーブルで、データは以下です。

f:id:Tairax:20191027225306p:plain

id name age job gender
a001 田中 26 植木屋 1
a002 佐藤 35 運送 2
a003 山田 20 大工 1
a004 金子 35 翻訳 0
a005 田中 40 エンジニア 1
a006 田中 10 小学生 0
A101 鈴木 24 プロ野球 2

TOP句の実際の例として、以下の3つの例を出します。

  1. テーブルのレコード数未満の数字をTOP句に指定
  2. テーブルのレコード数より大きい数字をTOP句に指定
  3. ORDER BYで並べ替えをしてTOP句を指定

サンプル1:テーブルのレコード数未満の数字をTOP句に指定

【Person】のレコードは7行なので、先頭から3行取得するように指定します。

SELECT TOP (3) [id]
      ,[name]
      ,[age]
      ,[job]
      ,[gender]
  FROM [Sample].[dbo].[Person]

結果は以下です。

f:id:Tairax:20191028000305p:plain

id name age job gender
a001 田中 26 植木屋 1
a002 佐藤 35 運送 2
a003 山田 20 大工 1

先頭から3行取得できていることを確認できました!

サンプル2:テーブルのレコード数より大きい数字をTOP句に指定

【Person】のレコードは7行なので、先頭から100行取得するように指定します。

SELECT TOP (100) [id]
      ,[name]
      ,[age]
      ,[job]
      ,[gender]
  FROM [Sample].[dbo].[Person]

結果は以下です。

f:id:Tairax:20191028000811p:plain

id name age job gender
a001 田中 26 植木屋 1
a002 佐藤 35 運送 2
a003 山田 20 大工 1
a004 金子 35 翻訳 0
a005 田中 40 エンジニア 1
a006 田中 10 小学生 0
A101 鈴木 24 プロ野球 2

テーブルのレコード数より大きい数字を設定した場合、すべてのレコードを取得することが分かりました!

サンプル3:ORDER BYで並べ替えをしてTOP句を指定

【Person】【age】列を昇順で並び替えして、先頭から2行取得するように指定します。

SELECT TOP (2) [id]
      ,[name]
      ,[age]
      ,[job]
      ,[gender]
  FROM [Sample].[dbo].[Person]
  ORDER BY [age] ASC

結果は以下です。

f:id:Tairax:20191028001704p:plain

id name age job gender
a006 田中 10 小学生 0
a003 山田 20 大工 1

ORDER BYで並び替えをした場合、並び替えした後の結果からTOP句で指定したの数分をレコードを取得することが分かりました!

まとめ:TOP句で指定した数分のレコードを取得してみよう!

以上がTOP句の解説です。
まとめなので、もう1度振り返ってみましょう。

SELECT TOP (取得したい行数) [フィールド1]
      ,[フィールド2]
      ,[フィールド3]
  FROM [テーブル名]

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

 

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

【SQL Server】SELECT句について解説します

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

【SQL Server】Transact-SQLとは?解説します