我对SQL执行顺序没有深入的了解。外部查询OrderBy不取决于内部查询的结果集
当我执行查询
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的顺序影响着Inner Query的整个表格。
请评论我在哪里犯错。
你使用哪种DBMS?我正在使用SQL Server,结果如预期的那样,ABC2,200,Data002由ABC1,100,Data001跟随。 – Mithrandir 2013-04-29 07:00:51
@Mithrandir - 没有。我没有在SQL Server中获得预期的结果。 – hims056 2013-04-29 07:02:36
我正在使用SQL Server 2008. – Romesh 2013-04-29 07:11:45