oracle 分頁查詢 rownum

2021-08-19 17:39:54 字數 1464 閱讀 6662

rownum

可能都知道

rownum

只適用於小於或小於等於,如果進行等於判斷,那麼只能等於

1,不能進行大於的比較。

rownum是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推。

rownum

總是從1

開始,不管當前的記錄是否滿足查詢結果,

rownum

返回的值都是

1,如果這條記錄的值最終滿足所有的條件,那麼

rownum

會遞加,下一條記錄的

rownum

會返回2

,否則下一條記錄的

rownum

仍然返回1。

理解了這一點,就清楚為什麼一般的

rownum

大於某個值或等於某個不為

1的值是無法返回結果的,因此對於每條記錄的

rownum都是1

,而rownum為1

不滿足查詢的結果,所以下一條記錄的

rownum

不會遞增,仍然是

1,因此所有的記錄都不滿足條件。

分頁查詢格式1

在查詢的最外層控制分頁的最小值和最大值。查詢語句如下:

[sql] 

view plain

copy

select

* from

(  select

a.*, rownum rn   

from

(select

* from

table_name) a   

)  where

rn between

21 and

40  

分頁查詢格式2

[sql] 

view plain

copy

select

* from

(  select

a.*, rownum rn   

from

(select

* from

table_name) a   

where

rownum <= 40  

)  where

rn >= 21  

分頁查詢格式3

考慮到多表聯合的情況,如果不介意在系統中使用hint的話,可以將分頁的查詢語句改寫為:

[sql] 

view plain

copy

select

/*+ first_rows */ * 

from

(  select

a.*, rownum rn   

from

(select

* from

table_name) a   

where

rownum <= 40  

)  where

rn >= 21  

ORACLE分頁查詢

單錶分頁 start num 起始行號 end num 截止行號 select t.from select s.rownum rn from table s where rownum end num t where rn start num 多表分頁 select from select temp....

Oracle分頁查詢

oracle的分頁查詢語句基本上可以按照本文給出的格式來進行套用。分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內層的查詢select from t...

oracle 分頁查詢

1 要把rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...