数据库基础问题求帮忙

取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
select top 10 * from T_number where id >(select max(id) from (select top 30 id from T_number)as T_number ) 为什么我取到的max(id)值是全表中最大的不是前30条最大的

row_number(),用这个取得行号,然后从这个结果集中去你要的范围,比如
select id from (select row_number(xxxxx) as id from xxxx) T where id between 30 and 40