页面结果在[您选择的数据库]中

时间:2009-05-26 08:19:13

标签: database pagination

我想收集“最先进”的方法来为这个维基中的任何数据库分页结果。

输入:我有一个巨大的表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:013. Aug 2008 11:00:01之间显示结果,每次20个,按时间排序,按升序排列(5月5日)。查询应返回NAMECREATED(加上您需要对结果进行分页所需的任何内容),因此内部查询为:

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

在键盘上,准备好......去! ;)

2 个答案:

答案 0 :(得分:1)

阅读article heresql 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,......