3

私は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

私の知る限り、内部クエリは外部クエリに2行を返します。外部クエリは、これらの 2 つの行を次のように処理します。

From->Where->group by->having->Select->Order by

実行の順序と、期待どおりに言及した2行として出力が得られます。ただし、外部クエリの順序は、内部クエリのテーブル全体に影響します。

私が間違っているところをコメントしてください。

4

1 に答える 1