使用 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,将返回包含 ORDER BY 子句返回的最后一个值的所有行,即便这样将超过 expression 指定的数量。
TOP 和 SET ROWCOUNT
限制结果集大小的另一种方法是在执行一个语句之前执行 SET ROWCOUNT n 语句。SET ROWCOUNT 与 TOP 的不同之处体现在下列方面:
- SET ROWCOUNT 限制适用于计算 ORDER BY 后在结果集中生成行。如果指定了 ORDER BY,SELECT 语句将在从根据指定的 ORDER BY 分类进行排序的某个值集中选择 n 行后结束。
- 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)