在库里 我要找 ID = 1 的 第 5-10 条记录........假设库中有100条各式的记录 其中ID = 1 的分布在 不同的位置 共有30条那么 如何去 查到 那 5-10条记录呢...........晕死我了......
求前辈指点

解决方案 »

  1.   

    取n到m条记录的语句 1. 
    select top m * from tablename where id not in (select top n id from tablename) 2. 
    select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入 
    set rowcount n 
    select * from 表变量 order by columnname desc 3. 
    select top n * from  
    (select top m * from tablename order by columnname) a 
    order by columnname desc 
    4.如果tablename里没有其他identity列,那么: 
    select identity(int) id0,* into #temp from tablename 取n到m条的语句为: 
    select * from #temp where id0 > =n and id0  <= m 如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行: 
    exec sp_dboption 你的DB名字,'select into/bulkcopy',true 
    5.如果表里有identity属性,那么简单: 
    select * from tablename where identitycol between n and m  
      

  2.   

    select top 5 * from(
    select top 10 * from tb where id =1 order by id 
    ) a
    order by a.id desc
      

  3.   

    谢谢 大家 但是还有个问题 如果我 把select top 5 * from(  
    select top 10 * from tb where id =1 [order by id ]
    ) a  
    order by a.id desc 中括号的去掉 为什么查到的就是 另外的结果呢?我刚才也写了 类似的查询 但是 order by id 没写.........得到的结果 和预期的 相差很大求解
      

  4.   

    中括号的 内容 应该 相当于 order by id asc 
    但是我改成 order by id desc 就又面目全非了........
      

  5.   


    当然呀,这不是相当于取你的最后5条呀不加order by 是因为你的ID不是聚集索引呀,
      

  6.   

    明显是取六条,你们搞的都是5条?
    另还需要一个字段如val,且唯一select top 6 * from 
    (select top 10 * from tb where id = 1 order by val) t
    order by valselect top 6 * from 
    (select top 10 * from tb where id = 1 order by val desc) t
    order by val desc