如果记录有200条我需要查询第21-30条,如同网页中的翻页功能.
注意:记录是根据其他字段筛选过的ID不是连续的不能另外建立临时表在SQL中如同查询前10条记录一样有 TOP 10这个关键字来查询而我需要查找指定位置的(如21-30或31-40),不要TOP40,然后再进行遍历,重新定位.

解决方案 »

  1.   

    select * from ( select row_number() over (order by ...) as nid,* from tb where ...) as a where nid between 10 and 20 
      

  2.   

    select top m * from tablename where id not in (select top n id from tablename) 
    取21条和30条中间的数据
      

  3.   


    select top m * from tablename where id not in (select top n id from tablename) 
    取21条和30条中间的数据取记录 之间的数据 就当一个公式记忆吧 
      

  4.   

    row_number??SQL不是2005的我的是SQL 8.0的认不识这个函数
      

  5.   

    3,4楼的就可以了,楼主不理解么?
    select top m * from tablename where not exists (select top n id from tablename;) 
      

  6.   

    --如果是sql 2005,可以试以下语句(我这边没有2005的环境,没测试过)
    SELECT *
    FROM (SELECT ROW_NUMBER() AS rownum,*  FROM 表名) t
    WHERE rownum BETWEEN 21 AND 30说明:“表名”是你根据其他字段筛选后的记录集
      

  7.   

    如果是sql 2005以前版本.必须配合一个唯一值的列,如自增id
    或者用游标
    或者用程序.
      

  8.   

    select top 10 * from tb where id>(select max(id) from (select top 20 id from tb order by id))