2011-11-09 14 views
2

内側のクエリ:値を持つSQLの私は、テーブルtbl_test持つ問題

create table tbl_test (
    tabid int identity 
) 

を:

Insert into tbl_test values 1 union 2 union 3 .... union 1000 

問合せ:

select MAX(b.tabid) from 
( 
    select top 100 * from tbl_test 
) as b 

が、私はこのクエリは100代わりにそれを返すことを期待1000を返します。

答えて

8
select top 100 * from tbl_test 

内部ステートメントには明示的な順序がないため、行が読み取られる順序の保証はありません。 tabid ASCで注文した場合、期待される100が表示されます。

2

サブクエリにはorder by句は含まれていません(TOPと組み合わせて使用​​できます)。戻ってくるレコードはありません。サブクエリから返されるデータには明らかに1000が含まれています。つまり、MAXによって返されます。

関連する問題