2011-11-09 27 views
2

我有一個表tbl_test:的Sql內部查詢問題

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

你不包括子句中的子查詢的順序(這是允許與TOP一起),所以沒有告訴什麼記錄會回來的。 1000顯然是包含在從子查詢返回的數據中,這意味着它將由MAX返回。