在视图定义中不能单独使用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 子句并返回排序的数据,也不应该依赖于这种方法 。