我对 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
执行顺序和将按预期将输出作为我提到的两行。但是外部查询的顺序是影响内部查询的整个表。
请评论我在哪里犯错。