2009-05-26 20 views
0

このwikiのデータベースの結果にページ区切りを設定する方法については、「最先端」の方法を収集したいと思います。[結果のデータベース]

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

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

idcreatedと同じ順序である必要はありません。 5. May 2008 09:03:013. 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 

、準備ができて...行きます! ;)

答えて

1

私のarticle heresql server hereからページングクエリを読んでください。すべてのクエリは、あなたがそれらに投げるどんなクエリでも動作するように作られているので、いくつかの状況でしか動作しないトリックはありません。オラクルで

1

一般的な解決策である:ここ

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、...

+0

これはいつも使っています。より最近のバージョンのMSSQLにも同様の機能がありますので、MSSQLでも同様の構成(わずかな変更を加えて)を使用することができます。 –

+0

ああ、中にサブクエリは必要ありません。最も内側のサブクエリにorder by句があるので、最も内側のものに "ROWNUM <= x"という名前をつけて、 。 –

+1

あなたはMSSQLでそれを必要としないのですか? Oracleで必要な場合は、正しいデータを取得できません。 –

関連する問題