ホームページ >データベース >mysql チュートリアル >LIMIT を使用せずに SQL Server で取得されるレコードの数を制限するにはどうすればよいですか?

LIMIT を使用せずに SQL Server で取得されるレコードの数を制限するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-18 18:34:11535ブラウズ

How Can I Limit the Number of Records Retrieved in SQL Server Without Using LIMIT?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。