我有一张桌子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。
答案 0 :(得分:8)
select top 100 * from tbl_test
内部语句没有明确的顺序,因此没有保证读取行的顺序。如果您按tabid ASC
订购,则会看到预期的100。
答案 1 :(得分:2)
你的子查询中没有包含order by子句(允许与TOP一起使用),因此无法确定将返回哪些记录。 1000显然包含在从子查询返回的数据中,这意味着它将由MAX返回。