表:ClanInfo 
字段:cid      cname    cinfo 
----------------------------------------- 
      1101      ddwsw    eseeee 
      1101      ddwsw    eseeee 
      1101      ddwsw    eseeee 
      1101      ddwsw    eseeee 
      1101      ddwsw    eseeee 
------------------------------------------ 因cid的编号不定,我怎么用between 1 and 20来取第几条到条第几条先谢谢

解决方案 »

  1.   


    ;
    with Temp as (SELECT id = ROW_NUMBER() OVER (ORDER BY cid), * FROM 表ClanInfo) 
    select cid,cname,cinfo from Temp  where id between 1 and 20 order by cid
      

  2.   

    select  cid,cname,cinfo from (select row=row_number() over(order by cid),* from claninfo) tb where row between 1 and 20 order by row
      

  3.   


    --测试数据
    DECLARE @TB TABLE(cid int, cname   varchar(10), cinfo  varchar(10))
    INSERT @TB 
    SELECT 1101, 'ddwsw', 'eseeee' UNION ALL 
    SELECT 1101, 'ddwsw', 'eseeee' UNION ALL 
    SELECT 1101, 'ddwsw', 'eseeee' UNION ALL 
    SELECT 1101, 'ddwsw', 'eseeee' UNION ALL 
    SELECT 1101, 'ddwsw', 'eseeee' 
    ;
    with Temp as (SELECT id = ROW_NUMBER() OVER (ORDER BY cid), * FROM @TB) 
    select cid,cname,cinfo from Temp  where id between 1 and 3 order by cid
    --由于数据量小,只取三条
    /*
    1101 ddwsw eseeee
    1101 ddwsw eseeee
    1101 ddwsw eseeee
    */
      

  4.   

     在SQL2005中利用RANK()函数与ROW_NUMBER()对现有数据进行排序改造在SQL2005中利用NTILE()排名函数对现有数据进行排序改造在SQL2005中利用DENSE_RANK()排名函数对现有数据进行排序改造