0

このウィキのデータベースの結果をページ分割するための「最先端の」方法を収集したいと思います。

入力:私は巨大なテーブルPAGE_MEを持っています:

create table PAGE_ME (
    ID bigint not null,
    NAME varchar(32) not null,
    CREATED TIMESTAMP not null
)

id必ずしも。と同じ順序である必要はありませんcreated5. May 2008 09:03:01から20までの結果を3. Aug 2008 11:00:01、時間順に昇順(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

キーボードで、準備ができました... Go!;)

4

2 に答える 2

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 に答える
1

ページング クエリについては、こちらの記事から、SQL サーバーについてはこちらからお読みください。すべてのクエリは、投げたクエリで機能することを意図しているため、特定の状況でのみ機能するトリックはありません。

于 2009-05-26T09:04:00.967 に答える