SQL Serverで取得件数に制限をかける
こんにちは、今年度入社した日高です。
最近業務でAzure上でSQL Serverを使用しており、取得行数に制限をかけたい場面に遭遇し少し詰まったので共有します
なぜ詰まったのか?
何度かMySQLとPostgreSQLだとlimit句というものがあり、limit句を利用することで取得件数に制限をかけることができます。
しかし、SQL Serverには存在しません。
学生時代に何度かMySQLとPostgreSQLを利用したことがあり、逆に詰まりました。
上位N件を取得する
上位N件のみ取得したい場合はtop句を使うことで実現できます\例えば、Userテーブルから上位100件のレコードを取得したい場合、
select top 100 * from User このように書くことができます。
N件目からM件目までを取得する
top句を使うと上位のデータをは取得できるようになります。
しかしtop句ではN件目からM件目のようなレコードの取得はできません。このような場合はoffset fetch句を利用することで取得できます。
例えば、Userテーブルから10件目から20件目のレコードを取得したい場合、
select * from User
order by Id
offset 10 rows
fetch next 10 rows onlyこのように書くことで取得することができます
order by句を書かないとエラーになる点、fetchはoffsetからの個数をを指定する点の2点には気を付けてください







![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)


