视图中order by 的使用

在视图定义中不能单独使用order by,top和order by或 order by 和for xml 可以一起组合出现在视图的定义中;

例如:

CREATE VIEW TT
AS 
SELECT * FROM  TEST
ORDER BY ID


这种定义会出现报错,原因为:TOP和FOR XML都是T-SQL的扩展,不是标准的SQL元素。TOP和ORDER BY以及ORDER BY和FOR XML是结果集规范的一部分,但是单独的ORDER BY并不是。如果实际中需要对视图中数据进行排序,可以在视图的外部查询中指定order by;

有人认为可以创建如下视图:

CREATE VIEW TT

AS 

SELECT TOP 100 PERCENT * FROM  TEST

ORDER BY ID

利用视图的这个漏洞定义一个非常可笑的视图,在2008 中进行测试查询视图返回的结果并没有排序;即使优化器不忽略ORDER BY 子句并返回排序的数据,也不应该依赖于这种方法 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值