我们可以在sql server 2005中使用order by子句

时间:2012-01-24 10:08:01

标签: sql sql-server-2005

我们可以在sql server 2005中使用order by子句吗?

    CREATE VIEW vw_authors 

    AS

    SELECT TOP 10 PERCENT * 

    FROM dbo.authors 
    Group by au_id
    ORDER BY au_fname

3 个答案:

答案 0 :(得分:4)

是和否。您无法在视图中使用order by来指定顺序。您可以将其用于行选择,例如使用top 10。来自MSDN online docs

  

视图定义中的SELECT子句不能包含以下内容:
  COMPUTECOMPUTE BY条款;
  ORDER BY子句,除非TOP语句(a)的选择列表中还有SELECT子句;
  INTO关键字;
  OPTION条款;
  对临时表或表变量的引用。

     

(a) ORDER BY子句仅用于确定视图定义中TOP子句返回的行。查询视图时,ORDER BY子句不保证有序结果,除非在查询本身中也指定了ORDER BY

答案 1 :(得分:2)

是的,你可以。

CREATE VIEW vw_authors 

AS

SELECT TOP 10 PERCENT * 

FROM dbo.authors 

WHERE au_fname='John'

但是,ORDER BY无效。视图创建动态结果集,然后可以以与表格相同的方式查询。查询视图后,您可以ORDER BY

SELECT au_fname
FROM vw_authors
ORDER BY au_fname

答案 2 :(得分:1)

这是一个不错的Overview of Views in SQL Server 2005。如本文所述,可以对视图建立索引,以便可以使用ORDER BY有效地对视图的查询进行排序。另请参阅此Microsoft article on indexed views

摘要答案:不,您在创建视图时无法使用ORDER BY,但您可以对视图编制索引,并对该视图的查询使用快速ORDER BY

希望这会有所帮助。祝你的项目好运: - )