使用 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 */.
如果包含 TOP 的 SELECT 陳述式也有 ORDER BY 子句,傳回的資料列便從已排序的結果集來選取。整個結果集會依指定的順序建立,並且傳回已排序之結果集的前 n 個資料列。如果同時指定了 WITH TIES,則包含 ORDER BY 子句所傳回最後值的所有資料列都會被傳回,不過這樣可能會超出 expression 指定的數目。
TOP 與 SET ROWCOUNT 的比較
限制結果集大小的另一種方法是在執行陳述式之前,先執行 SET ROWCOUNT n 陳述式。SET ROWCOUNT 與 TOP 的差異如下:
- 用來建立結果集資料列所套用的 SET ROWCOUNT 限制會在驗算 ORDER BY 之前進行。指定 ORDER BY 之後,若已根據所指定之 ORDER BY 分類而排序的一組值當中,選取了 n 個資料列,則 SELECT 陳述式就會結束。
- TOP 子句僅適用於指定它的單一 SELECT 陳述式中。SET ROWCOUNT 則會維持有效,直到執行另一個 SET ROWCOUNT 陳述式為止,例如會將此選項關閉的 SET ROWCOUNT 0。
重要事項: 使用 SET ROWCOUNT 並不會影響 SQL Server 下一版的 DELETE、INSERT 和 UPDATE 陳述式。請避免在新的開發工作中使用 SET ROWCOUNT 搭配 DELETE、INSERT 和 UPDATE 陳述式,並計劃修改目前正在使用它的應用程式。我們建議將目前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 陳述式,都重寫為改用 TOP。
請參閱
其他資源
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)