[英]SQL Server ORDER BY clause in subquery
我在SQL Server中遇到一個奇怪的錯誤,我想要一些解釋。
例如,當我在子查詢中編寫ORDER BY
時
SELECT a FROM (SELECT * FROM A ORDER BY a) T
它會引發以下錯誤
除非還指定了TOP或FOR XML,否則ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效。
但是當我在子查詢中使用TOP
,它正常工作
SELECT a
FROM
(SELECT TOP 1000000 * FROM A ORDER BY a) T
那么,這是否意味着我可以選擇A的頂行數,而不是
SELECT a FROM (SELECT * FROM A ORDER BY a) T
在這種情況下。 錯誤的原因是什么?
排序子查詢沒有多大意義,之后從中選擇一些東西 - 不能保證頂級選擇將被排序,所以 - 沒有意義來排序內部查詢
但是如果你用TOP
語句命令內部查詢 - 它也不能保證頂級選擇將以這種方式排序,但它只包含來自內部查詢的前X行 - 這已經有意義了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.