ホームページ >データベース >mysql チュートリアル >LIMIT を使用せずに SQL Server で取得されるレコードの数を制限するにはどうすればよいですか?
SQL Server のレコード制限: LIMIT を超えました
SQL Server は、他のデータベース システムで一般的に使用される LIMIT 関数または OFFSET 演算子をサポートしていません。これは、取得するレコードの数を制限する場合に課題となる可能性があります。
ただし、SQL Server は、同様の機能を実現する別の方法を提供します。 1 つの方法は、WHERE 句で ROW_NUMBER() 関数を使用することです。
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS row FROM sys.databases ) a WHERE row > 5 AND row <= 10</code>このサブクエリは各行に行番号を割り当て、指定された範囲内の行のみが含まれるように結果をフィルターします。
もう 1 つの方法は、TOP 句を使用することです:
<code class="language-sql">SELECT TOP 10 * FROM stuff</code>TOP は返される行数を制限しますが、開始位置を制御することはできません。
SQL Server にはなぜ LIMIT がないのですか?
SQL Server に LIMIT 関数がないのは、パフォーマンス上の考慮事項が原因である可能性があります。 LIMIT を使用すると、特に大きなテーブルでパフォーマンスが低下する可能性があります。 SQL Server はクエリ実行時間の最適化を優先します。
OFFSET と ROWS を使用する
SQL Server 2012 以降では、OFFSET キーワードと ROWS キーワードを使用して、結果セットをより詳細に制御できます。
<code class="language-sql">SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY</code>このクエリは、最初の 5 行をスキップして次の 5 行を取得し、LIMIT に相当する制限機能を提供します。
以上がLIMIT を使用せずに SQL Server で取得されるレコードの数を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。