有一个问题,一直没想出更好的办法。
数据库里有几十条记录,ID可以自动累加。
我想实现:
每天取出3条记录,并显示出来。
如第一天取出1、2、3条记录,第二取出4、5、6条记录。
如果最后一天只有34一条记录了,则取出34、1、2条记录。怎么实现最合理、最简单呢?

解决方案 »

  1.   

    如果ID是连续的,可以把ID算出来,然后查询
      

  2.   

    Create one field named [flag](int ,default(0))
    Then run sql as :select top 3 * into #tmp from table order by flag,id;
    update table set flag = flag + 1 where id in (select id from  #tmp)
    select * from #tmp
    drop table  #tmp
      

  3.   

    按ID/3 + ID%3 = 0,1,2来取
      

  4.   

    create table A(id int)
    insert into A values(1)
    insert into A values(2)
    insert into A values(3)
    insert into A values(4)
    insert into A values(5)
    insert into A values(6)
    insert into A values(7)
    insert into A values(8)
    insert into A values(9)
    insert into A values(10)
    insert into A values(11)
    insert into A values(12)
    insert into A values(13)
    insert into A values(14)
    goselect id_1+1 天,
      max(case id_2 when 1 then id else 0 end) [1],
      max(case id_2 when 2 then id else 0 end) [2],
      max(case id_2 when 0 then id else 0 end) [3]
    from
    (
      select id , (id-1)/3 id_1, id % 3 id_2 from A
    ) t
    group by id_1 + 1drop table A/*
    天           1           2           3           
    ----------- ----------- ----------- ----------- 
    1           1           2           3
    2           4           5           6
    3           7           8           9
    4           10          11          12
    5           13          14          0(所影响的行数为 5 行)
    */