我创建了一个包含3个SQL表的简单视图。SQL。按字段排序
通过右键单击并选择设计,在对象资源管理器表中,我修改了我的自定义视图。我在一个字段中添加了sortby asc。
问题是,更改不反映在视图的大小。 保存视图并选择打开视图后,排序不会显示在输出中。
那么这里发生了什么?
我创建了一个包含3个SQL表的简单视图。SQL。按字段排序
通过右键单击并选择设计,在对象资源管理器表中,我修改了我的自定义视图。我在一个字段中添加了sortby asc。
问题是,更改不反映在视图的大小。 保存视图并选择打开视图后,排序不会显示在输出中。
那么这里发生了什么?
从技术上讲,它可以烘烤排序到VIEW
,但它是非常不鼓励。相反,你应该申请排序,而从像这样的视图中选择:
Select ...
From MyView
Order By SortByCol ASC
如果你真的想知道(但同样,我会强烈反对这一点),你可以使用TOP命令,以绕过限制在视图排序:
Select TOP 100 PERCENT * Col1, Col2....
From Table1
Order By SortByCol ASC
一般,视图无法排序。
(如其他人所说,有一个黑客做到这一点,但因为你正在使用一个可视化查询设计器,而不是写在SQL视图定义,它可能难以实现该黑客。)
你没”实际上“修改”你的视图,你只改变了EM使用的SELECT语句来选择从你的看法。排序设置不保留在视图定义中。
当您关闭该选项卡时,EM不会记住您对该视图的排序首选项,因此当您再次打开视图时,它将以SQL Server决定的任何顺序出现。
看来:
在SQL Server 2000中,2008年SQL 2005和SQL CREATE VIEW语句不能包含ORDER在视图定义中的SELECT子句限制BY子句,除非还有TOP子句在SELECT语句的选择列表中。 ORDER BY子句仅用于确定视图定义中TOP子句返回的行。在查询视图时,ORDER BY子句不保证排序结果,除非ORDER BY也在查询本身中指定。
还有一个需要应用的修补程序。之后,您应该使用Top 100%来确保按顺序工作。
HTH