gpt4 book ai didi

sql - 外部查询 OrderBy 不依赖于内部查询的结果集

转载 作者:行者123 更新时间:2023-12-04 14:37:28 25 4
gpt4 key购买 nike

我对 SQL 执行顺序的了解不深。

当我执行查询时

select top 2 * from Configuration 

它给了我

ABC1,100,Data001    
ABC2,200,Data002

当我执行查询时

select top 2 * from Configuration order by 1 desc

它给了我

XYZ1,400,Data100    
XYZ2,300,Data099

当我执行查询时

select * from (select top 2 * from Configuration) as a order by 1 desc

它给了我

XYZ1,400,Data100    
XYZ2,300,Data099

我的问题是为什么我得到

XYZ1,400,Data100    
XYZ2,300,Data099

改为输出

ABC1,100,Data001    
ABC2,200,Data002

据我所知,内部查询将向外部查询返回两行。外部查询将使用

处理这两行
From->Where->group by->having->Select->Order by

执行顺序和将输出作为我预期的两行。但是Outer Query的order by影响的是Inner Query的整张表。

有错误的请评论。

最佳答案

默认情况下,SQL Server 没有任何填充顺序的意义。在您的内部查询中,您没有指定顺序,因此它返回了错误的结果。现在对 SQL Server 2008 R2 使用以下代码

SELECT * FROM (SELECT TOP 2 * FROM Configuration ORDER BY 1) AS a ORDER BY 1 DESC

另一种选择是:Comman Table Expression,如下所示,

;WITH cteTest AS
(
SELECT TOP 2 *
FROM Configuration ORDER BY 1
)
SELECT * FROM cteTest ORDER BY 1 DESC

关于sql - 外部查询 OrderBy 不依赖于内部查询的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com