我们可以在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
答案 0 :(得分:4)
是和否。您无法在视图中使用order by
来指定顺序。您可以将其用于行选择,例如使用top 10
。来自MSDN online docs:
视图定义中的
SELECT
子句不能包含以下内容:
COMPUTE
或COMPUTE 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
。
希望这会有所帮助。祝你的项目好运: - )