oracle的分頁語句怎麼寫

1. 在oracle數據庫中的分頁SQL語句怎麼寫

前提:

oracle的分頁語句怎麼寫

分頁參數:size = 20 page = 2;

沒有order by的查詢;

嵌套子查詢,兩次篩選(推薦使用)。

SQL語句:

SELECT *

FROM (SELECT ROWNUM AS rowno, t.*

FROM DONORINFO t

WHERE t.BIRTHDAY BETWEEN TO_DATE ('19800101', 'yyyymmdd')

AND TO_DATE ('20060731', 'yyyymmdd')

AND ROWNUM <= 20*2) table_alias

WHERE table_alias.rowno > 20*(2-1);

擴展資料:

rownum總是從1開始的,第一條不滿足去掉的話,第二條的rownum 又成了1。依此類推,所以永遠沒有不滿足條件的記錄。

可以這樣理解:rownum是一個序列,是Oracle數據庫從數據文件或緩衝區中讀取數據的順序。它取得第一條記錄則rownum值為1,第二條為2。

依次類推:當使用“>;、>;=、=、between。and”這些條件時,從緩衝區或數據文件中得到的第一條記錄的rownum為1,不符合sql語句的條件,會被刪除,接着取下條。下條的rownum還會是1,又被刪除,依次類推,便沒有了數據。

2. 初學oracle,怎樣寫一個oracle分頁sql語句

sql = "select * from " +

"(select rownum r,* from " +

"(select * from articles order by postime desc)" +

"where rownum<= " + pageNo*pageSize +") tmp " +

"where r>" + (pageNo-1)*pageSize;

其中,pageNo為頁數,pageSize為每頁顯示條數。

3. Oracle 中適合多表的分頁語句怎麼寫

SELECT * FROM

(

SELECT A.*, ROWNUM RN

FROM (SELECT * FROM TABLE_NAME) A

WHERE ROWNUM &lt;= 40

)

WHERE RN &gt;= 21

其中最內層的查詢SELECT * FROM TABLE_NAME表示不進行翻頁的原始查詢語句。ROWNUM &lt;= 40和RN &gt;= 21控制分頁查詢的每頁的範圍。

4. 初學oracle,怎樣寫一個oracle的分頁sql語句

先定義一個類除了上一頁,下一頁,首頁,尾頁,還要每頁字段條數,當前頁,總頁數,總字段數

總字段數就是你查詢出來的總字段數,

每頁字段條數是你自己定義的,

然後算出總頁數,當前頁

然後你就可以拼接sql語句了:

select top A * from table where id not in (select top A*(B-1) id from table);

A是每頁字段條數,B是當前頁。

其實如果用了hibernate 會發現,有現成的方法

Query對象

query.setFirstResult(A);//設置當前頁碼,從0開始

query.setMaxResults(B);//設置每頁顯示數目

5. oracle分頁查詢語句怎麼寫每頁查詢10條

1、通常的分頁寫法,也是第一種分頁方法,類似如下方式:

select * from (

select a.*, rownum rn from

(select * from test a order by object_name) a

where rownum <=1000)

where rn > 990;

這種方式,是對錶進行排序翻頁,比較常見,但是,第一頁與第1000頁的性能差異還是挺明顯的。

2、第二種的分頁寫法是對索引進行翻頁操作,然後根據rowid 去表中取數據。 這種方式,第一頁與第1000頁性能相差不大。

以下語句雖然使用HINT指定使用索引, 但是仍然沒有生效。

select b.* from (

select * from (

select a.*, rownum rn from

(select /*+ index(a ix_object_name) */ rowid rid from test a order by object_name) a

where rownum <=20)

where rn > 10) a, test b

where a.rid = b.rowid;