我想收集“最先进”的方法来为这个维基中的任何数据库分页结果。
输入:我有一个巨大的表PAGE_ME:
create table PAGE_ME (
ID bigint not null,
NAME varchar(32) not null,
CREATED TIMESTAMP not null
)
id
不一定与created
的顺序相同。我希望在5. May 2008 09:03:01
和3. Aug 2008 11:00:01
之间显示结果,每次20个,按时间排序,按升序排列(5月5日)。查询应返回NAME
和CREATED
(加上您需要对结果进行分页所需的任何内容),因此内部查询为:
select NAME, CREATED
from PAGE_ME
where CREATED between '2008-05-05 09:03:01' and '2008-08-03 11:00:01'
order by CREATED asc
在键盘上,准备好......去! ;)
答案 0 :(得分:1)
阅读article here和sql server here的分页查询。所有查询都适用于你抛出的任何查询,所以没有任何技巧只能在某些情况下使用。
答案 1 :(得分:1)
在Oracle中,一个常见的解决方案是:
select NAME, CREATED
from
( select NAME, CREATED, ROWNUM rn
from
( select NAME, CREATED
from PAGE_ME
where CREATED between '2008-05-05 09:03:01' and '2008-08-03 11:00:01'
order by CREATED asc
)
where ROWNUM <= :max_row
)
where rn >= :min_row
这里,:min_row和:max_row定义当前页面的限制,例如: 1和10,11和20,......