こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL Serverの先頭から指定した行数を取得するTOP句について解説します。
スポンサーリンク
- 前提条件
- TOP句とは
- TOP句の使い方
- TOP句の解説に使うテーブル
- サンプル1:テーブルのレコード数未満の数字をTOP句に指定
- サンプル2:テーブルのレコード数より大きい数字をTOP句に指定
- サンプル3:ORDER BYで並べ替えをしてTOP句を指定
- まとめ:TOP句で指定した数分のレコードを取得してみよう!
前提条件
この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。
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については、こちらの記事をご参考ください。
TOP句の使い方
TOP句はSELECTの前にカッコでくくって取得したい行数の数字を設定してあげればOKです。
以下のように使います。
SELECT TOP (取得したい行数) [フィールド1]
,[フィールド2]
,[フィールド3]
FROM [テーブル名]
では、実際に使ってみましょう!
TOP句の解説に使うテーブル
TOP句の解説に使うテーブルは、【Person】テーブルで、データは以下です。
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つの例を出します。
- テーブルのレコード数未満の数字をTOP句に指定
- テーブルのレコード数より大きい数字をTOP句に指定
- ORDER BYで並べ替えをしてTOP句を指定
サンプル1:テーブルのレコード数未満の数字をTOP句に指定
【Person】のレコードは7行なので、先頭から3行取得するように指定します。
SELECT TOP (3) [id]
,[name]
,[age]
,[job]
,[gender]
FROM [Sample].[dbo].[Person]
結果は以下です。
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]
結果は以下です。
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
結果は以下です。
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】テーブルの列名を変更するsp_renameを解説します
【SQL Server】Transact-SQLとは?解説します
今までブログで書いたSQL Serverの解説記事のまとめは、こちらをご参考ください。