Sql内部查询问题
我有一个表tbl_测试:Sql内部查询问题,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个表tbl_测试: 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 select top 100 *
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
select top 100 * from tbl_test
内部语句没有明确的顺序,因此没有保证行的读取顺序。如果您按
tabid ASC
排序,您应该会看到预期的100条记录。您的子查询中没有包含order by子句(与TOP一起允许),因此不知道会返回哪些记录。1000显然包含在从子查询返回的数据中,这意味着它将由MAX返回