博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SET ROWCOUNT n 与 TOP(n) 的区别 .
阅读量:6098 次
发布时间:2019-06-20

本文共 2930 字,大约阅读时间需要 9 分钟。

都能实现只取得n条语句。。 使 SQL Server 在返回指定的行数之后停止处理查询。 Transact-SQL 语法约定语法  SET ROWCOUNT { number | @number_var }  参数number | @number_var在停止特定查询之前要处理的行数(整数)。备注重要提示: 在 SQL Server 的下一个版本中,使用 SET ROWCOUNT 将不会影响 DELETE、INSERT 和 UPDATE 语句。在新的开发工作中,避免将 SET ROWCOUNT 语句与 DELETE、INSERT 和 UPDATE 语句一起使用,并计划修改当前使用该语句的应用程序。另外,对于当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句,建议您使用 TOP 语法重写它们。有关详细信息,请参阅 DELETE (Transact-SQL)、INSERT (Transact-SQL) 或 UPDATE (Transact-SQL)。    对于在远程表和本地及远程分区视图上执行的 INSERT、UPDATE 和 DELETE 语句,将忽略 SET ROWCOUNT 选项设置。要将此选项设置为 off 以便返回所有的行,请将 SET ROWCOUNT 指定为 0。注意: 设置 SET ROWCOUNT 选项将使大多数 Transact-SQL 语句在受到指定数目的行影响后停止处理。这包括触发器和 INSERT、UPDATE 及 DELETE 等数据修改语句。ROWCOUNT 选项对动态游标无效,但它可以限制键集的行集和不区分游标。应谨慎使用该选项,它主要与 SELECT 语句一起使用。    如果行数值较小,则 SET ROWCOUNT 将覆盖 SELECT 语句 TOP 关键字。 当 INSERT、UPDATE 和 DELETE 语句使用显式 TOP 表达式时,这些语句将忽略 SET ROWCOUNT。这包括 INSERT 后跟 SELECT 子句的语句。SET ROWCOUNT 的设置是在执行时或运行时设置,而不是在分析时设置。  指定查询结果中将只返回第一组行。这组行可以是某一数量的行也可以是某一百分比数量的行。TOP 表达式可用在 SELECT、INSERT、UPDATE 和 DELETE 语句中。 Transact-SQL 语法约定语法  [      TOP (expression) [PERCENT]     [ WITH TIES ]] 参数expression 指定返回行数的数值表达式。如果指定了 PERCENT,则 expression 将隐式转换为 float 值;否则,它将转换为 bigint。在 INSERT、UPDATE 和 DELETE 语句中,需要使用括号来分隔 TOP 中的 expression。为保证向后兼容性,支持在 SELECT 使用不包含括号的 TOP expression,但不推荐这种用法。如果查询包含 ORDER BY 子句,则将返回按 ORDER BY 子句排序的前 expression 行或 expression% 的行。如果查询没有 ORDER BY 子句,则行的顺序是随意的。PERCENT 指示查询只返回结果集中前 expression % 的行。WITH TIES 指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOP n (PERCENT) 行中的最后一行的该参数值相同。只能在 SELECT 语句中且只有在指定 ORDER BY 子句之后,才能指定 TOP...WITH TIES。注意: 返回的记录关联顺序是任意的。SORT BY 不会影响此规则。    备注在已分区视图中,不能将 TOP 与 UPDATE 和 DELETE 语句一起使用。与 INSERT、UPDATE 或 DELETE 一起使用的 TOP 表达式中被引用行将不按任何顺序排列。TOP n 随机返回 n 行。例如,下面的 INSERT 语句包含 ORDER BY 子句,但该子句并不影响由 INSERT 语句直接引用的行。   INSERT TOP (2) INTO Table2 (ColumnB)      SELECT ColumnA FROM Table1      ORDER BY ColumnA 前一个查询中的 ORDER BY 子句仅引用嵌套 SELECT 语句返回的行。INSERT 语句选择 SELECT 语句返回的任意两行。若要确保插入 SELECT 子查询返回的前两行,请按如下所示重写该查询。   INSERT INTO Table2 (ColumnB)      SELECT TOP (2) ColumnA FROM Table1      ORDER BY ColumnA Microsoft SQL Server 2005 允许更新使用 TOP 子句创建的视图。由于 TOP 子句包含在视图定义中,所以如果更新后结果不再符合 TOP 表达式的要求,则可能导致某些行从视图中消失。有关详细信息,请参阅通过视图修改数据。查询中的 TOP 表达式不影响由于触发器被激发而执行的语句。触发器中已插入和已更新的表中将只显示确实受 INSERT、UPDATE 或 DELETE 语句影响的那些行。示例A. 在 TOP 中使用变量以下示例使用变量获取 AdventureWorks 数据库的 dbo.Employee 表中列出的前 10 个雇员。   USE AdventureWorks ;GODECLARE @p AS intSET @p='10'SELECT TOP(@p)*FROM HumanResources.Employee;GO B. 在 TOP 中使用 PERCENT 和 WITH TIES以下示例获取所有雇员中薪金最高的 10 个百分比的雇员,并根据基本薪金按降序返回。指定 WITH TIES 可确保结果集中同时包含其薪金与返回的最低薪金相同的所有雇员,即使这样做会超过雇员总数的 10 个百分比。   USE AdventureWorks ;GOSELECT TOP(10) PERCENT WITH TIESc.FirstName, c.LastName, e.Title, e.Gender, r.RateFROM Person.Contact c INNER JOIN HumanResources.Employee eON c.ContactID = e.ContactIDINNER JOIN HumanResources.EmployeePayHistory rON r.EmployeeID = e.EmployeeIDORDER BY Rate DESC;

 

转载于:https://www.cnblogs.com/SunshineBlog/archive/2012/04/02/2430548.html

你可能感兴趣的文章
第k小数
查看>>
构建之法阅读笔记三
查看>>
Python/PHP 远程文件/图片 下载
查看>>
【原创】一文彻底搞懂安卓WebView白名单校验
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
abb画学号
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>