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