簡體   English   中英

子查詢中的SQL Server ORDER BY子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM