ORDER BY 返回一個Cursor,並不返回結果集。而試圖將Cursor作爲輸入將產生了錯誤。
所以,下列的SQL語句將產生錯誤:
SELECT VerID, IsComplete
FROM ( SELECT TOP 10 VerID, IsComplete
FROM dbo.T_AOTInfo
ORDER BY VerID DESC ) AS TABLE1;
錯誤:
Msg 1033, Level 15, State 1, Line 4
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
同樣,試圖將上述語句包裝爲一個View,也會導致同樣的錯誤。
要解決這個錯誤,要麼,移除ORDER BY,要麼使用TOP, OFFSET或者FOR XML。
SELECT VerID, IsComplete
FROM ( SELECT TOP 10 VerID, IsComplete
FROM dbo.T_AOTInfo
ORDER BY VerID DESC ) AS TABLE1;
是爲之記。
Alva Chien2016.5.19