日期:2014-05-18  浏览次数:20626 次

按顺序按时间提取数据库记录的操作
有一个问题,一直没想出更好的办法。
数据库里有几十条记录,ID可以自动累加。
我想实现:
每天取出3条记录,并显示出来。
如第一天取出1、2、3条记录,第二取出4、5、6条记录。。。。
如果最后一天只有34一条记录了,则取出34、1、2条记录。

怎么实现最合理、最简单呢?

------解决方案--------------------
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)
go

select 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 + 1

drop 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 行)
*/