問:為什麼SQL Server不允許在視圖定義使用ORDER BY子句?
答: SQL Server之所以不允許在視圖定義中使用ORDER BY子句是為了遵守ANSI SQL-92標准。因為對該標准的原理分析需要對結構化查詢語言(SQL)的底層結構和它所基於的數學理論進行討論,我們不能在這裡對它進行充分的解釋。但是,如果你需要在視圖中指定ORDER BY子句,可以考慮使用以下方法:
USE pubs
GO
CREATE VIEW AuthorsByName
AS
SELECT TOP 100 PERCENT *
FROM authors
ORDER BY au_lname, au_fname
GO
Microsoft在SQL Server 7.0中引入的TOP結構在同ORDER BY子句結合使用時是非常有用的。只有在同TOP關鍵詞結合使用時,SQL Server才支持在視圖中使用ORDER BY子句。
注意:TOP關鍵詞是SQL Server對ANSI SQL-92標准的擴展。