TOP 运算符在Sql Server2005得到了增强,可以使用任何数值表达式(如变量名),而不是仅使用整数来指定该运算符返回的行数。
TOP 现在还可以在 INSERT、UPDATE 和 DELETE 语句中指定。
1.TOP 表达式可用在 SELECT、INSERT、UPDATE 和 DELETE 语句中。
3.取代set rowcount,可以防止锁升级,提高效率
与INSERT、UPDATE 或 DELETE 一起使用的 TOP 表达式中被引用行将不按任何顺序排列。
例如,下面的 INSERT 语句包含 ORDER BY 子句,但该子句并不影响由 INSERT 语句直接引用的行。
declare @t table(id int,salary int,manid int)
上个查询中的 ORDER BY 子句仅引用嵌套 SELECT 语句返回的行。
INSERT 语句选择 SELECT 语句返回的任意两行。
若要确保插入 SELECT 子查询返回的前两行,可以按如下写该查询。
declare @t table(id int,salary int,manid int)
SELECT TOP (2) id, salary, manid
TOP 运算符在Sql Server2005得到了增强,Top表达式可以是常量,变量,子查询
insert into test2([no],n)
我们可以看到,在Sql Server2005中top后面跟的可以是变量了,而在Sql Server2000中必须是常量才可以
要在Sql Server2000实现上述功能比较麻烦,需要用到动态sql语句,请看下面代码:
declare @sql nvarchar(255)
select @sql='select top ('+ convert(nvarchar(100),@i)+') * from test2 order by [no] asc'
select top ( select count([no]) from test2 where [no]=3 ) *
指定从基本结果集中返回更多的行,返回的行与TOP n (PERCENT) 行中的最后一行在ORDER BY 列中具有相同的值。
只有在指定ORDER BY 子句之后才能指定TOP WITH TIES。
select top (2) WITH TIES *
http://www.cnblogs.com/aierong
A.Sql Server2005 Transact-SQL 新兵器学习
FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))<视频聊天,会议开发实例8>
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现)
自定义格式字符串随笔 (IFormattable,IFormatProvider,ICustomFormatter三接口的实现)
Mcad学习笔记之异步编程(AsyncCallback 委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法)
Mcad学习笔记之序列化(2进制和Soap序列 化)
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨)
本文转自aierong博客园博客,原文链接:http://www.cnblogs.com/aierong/archive/2007/12/03/981247.html,如需转载请自行联系原作者