我的表纪录很多,目前2000多万条,还在不断增长中,所以要效率高才行。
为了减轻表负担,我没有设ID自动增长字段。sqlserver select 怎么选择数据库第100项至第600项的纪录?

解决方案 »

  1.   

    SQL2005:
    select * from (select top 600 rn=row_number()over(order by 索引列),* from tb) t where rn >=100
      

  2.   

    --sql 2000
    select 501 * from 
    (
      select top 600 * from tb order by id
    ) t
    order by id descselect * from 
    (
      select t.* , px = (select count(1) from tb where id < t.id) + 1 from tb t
    ) m
    where px between 100 and 600
    --sql 2005
    select * from 
    (
      select t.* , px = row_number() over(order by id) from tb t
    ) m
    where px between 100 and 600