Sql Server2005 Transact-SQL 学习总结之-TOP 运算符

TOP 运算符介绍:
TOP 运算符在Sql Server2005得到了增强,可以使用任何数值表达式(如变量名),而不是仅使用整数来指定该运算符返回的行数。
TOP 现在还可以在 INSERT、UPDATE 和 DELETE 语句中指定。

TOP 运算符的几个使用总结:
1.TOP 表达式可用在 SELECT、INSERT、UPDATE 和 DELETE 语句中。
2.Top表达式可以是常量,变量,子查询
3.取代set rowcount,可以防止锁升级,提高效率


特别提示:
与INSERT、UPDATE 或 DELETE 一起使用的 TOP 表达式中被引用行将不按任何顺序排列。
TOP n 随机返回 n 行。
例如,下面的 INSERT 语句包含 ORDER BY 子句,但该子句并不影响由 INSERT 语句直接引用的行。

请看例题:
有1个test表,表结构和表中数据如下:
select * from test

id salary manid
100 6500 100
200 5500 200
101 6600 100
102 6200 100
103 5100 100
104 6700 100
201 5800 200
202 4200 200



执行下面的语句:

Code


结果如下:
id salary manid
100 6500 100
200 5500 200


上个查询中的 ORDER BY 子句仅引用嵌套 SELECT 语句返回的行。
INSERT 语句选择 SELECT 语句返回的任意两行。
若要确保插入 SELECT 子查询返回的前两行,可以按如下写该查询。

Code


结果如下:
id salary manid
202 4200 200
103 5100 100


TOP 运算符在Sql Server2005得到了增强,Top表达式可以是常量,变量,子查询
下面我们再来看另个例题:

Code


结果如下:
no n
1 a
2 b
2 b2
2 b3
3 c
3 c2

1.利用top变量,筛选no最小的2行

Code


结果如下:
no n
1 a
2 b

我们可以看到,在Sql Server2005中top后面跟的可以是变量了,而在Sql Server2000中必须是常量才可以
要在Sql Server2000实现上述功能比较麻烦,需要用到动态sql语句,请看下面代码:

Code


2.利用top子查询来筛选

Code


3.WITH TIES参数:
指定从基本结果集中返回更多的行,返回的行与TOP n (PERCENT) 行中的最后一行在ORDER BY 列中具有相同的值。
只有在指定ORDER BY 子句之后才能指定TOP WITH TIES。

Code


2007年12月3日16:51:15
希望上面提到的知识对你有所提示
当然欢迎交流和指正

blog:
http://www.cnblogs.com/aierong
author:aierong
email:aierong@126.com




(文/aierong  出处/博客园)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [SQL Server] 的这些文章也感兴趣:

SQL Server7移动数据的6种方法
用SQL Server为Web浏览器提供图像(三)(转)
SQL Server 2005 产品线的扩展
删除SqlServer发布与复制订阅数据库
通过HTTP访问SQL Server 2000
访问 Microsoft SQL Server 元数据的三种方法
如何使Microsoft SQL Server的日志文件不会增大?
保护SQL Server的十个步骤
使用 SQL Server 2005中的 CLR 集成(1)
SQL Server 2008 Report Builder 2.0 RC1 发布下载