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