0

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

输入:我有一个巨大的表 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. 五月第一)。查询应该返回NAMEand 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

在键盘上,准备好……走吧!;)

4

2 回答 2

1

在这里阅读我的文章中的分页查询和这里的sql server。所有查询都适用于您向它们提出的任何查询,因此没有仅在某些情况下有效的技巧。

于 2009-05-26T09:04:00.967 回答
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,...

于 2009-05-26T09:32:06.747 回答