TOP と PERCENT の使用による結果セットの制限
TOP 句を使用すると、結果セットに返される行数を制限できます。
TOP ( expression ) [ PERCENT ] [ WITH TIES ]
ここで、expression は返される行数を指定する数値式です。PERCENT が指定された場合は、結果セット行のうち、expression が指定するパーセンテージの行が返されます。次に例を示します。
TOP (120) /*Return the top 120 rows of the result set. */
TOP (15) PERCENT /* Return the top 15 percent of the result set. */.
TOP(@n) /* Return the top @n rows of the result set, with the variable declaration: DECLARE @n AS BIGINT; SET @n = 2 */.
SELECT ステートメントに TOP 句と ORDER BY 句がある場合、返される行は順序付けられた結果セットから選択されます。結果セット全体は指定された順序で構築され、順序付けられた結果セットの先頭から n 行が返されます。WITH TIES も指定された場合は、expression によって指定された数を超えるかどうかにかかわらず、ORDER BY 句によって返された最後の値を含むすべての行が返されます。
TOP と SET ROWCOUNT
結果セットのサイズを制限するもう 1 つの方法は、ステートメントを実行する前に SET ROWCOUNT n ステートメントを実行することです。SET ROWCOUNT と TOP の相違点を次に示します。
- SET ROWCOUNT の制限は、ORDER BY の評価後に結果セットの行を構築するときに適用されます。ORDER BY を指定すると、SELECT ステートメントは、指定された ORDER BY の分類に従って並べ替えられた値のセットから n 行が選択されたときに終了します。
- TOP 句は、指定した 1 つの SELECT ステートメントに適用されます。SET ROWCOUNT は、このオプションをオフにする SET ROWCOUNT 0 など、別の SET ROWCOUNT ステートメントが実行されるまで有効です。
重要 : SQL Server の次のリリースでは、SET ROWCOUNT を使用しても、DELETE、INSERT、および UPDATE ステートメントが影響を受けることはありません。新しい開発作業では DELETE、INSERT、および UPDATE ステートメントでの SET ROWCOUNT の使用を避け、現在 SET ROWCOUNT を使用しているアプリケーションは変更を検討してください。現在 SET ROWCOUNT を使用している DELETE、INSERT、および UPDATE ステートメントは、TOP を使用して記述し直すことをお勧めします。
参照
その他の技術情報
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)