我對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