Oracle中分段查詢rownum

2021-06-07 20:24:02 字數 1277 閱讀 3381

oracle中的排序sql語法

第一種select a.*

from (select b.*, rownum row_num

from (select * from ac order by ac.rowid) b

where rownum < 200) a

where a.row_num > 100

注意:這裡巢狀了三層查詢,最裡層的一定要排序,如果不排序,查出來的資料是錯誤的

如何在oracle資料庫中查詢某一範圍的資料 比如查詢100到200之間的資料

這就用到了oracle的中每張表中隱藏的rownum

select * from ac where rownum <= 100  這條語句是可以的執行的

但是  如果

select * from ac where rownu > 200 這條語句就執行不了,因為rownum是根據查詢的結果集來對記錄進行編號,

所以當你查詢rownum大於2的記錄時會得到乙個空的結果集。

因為當oracle查詢得到第1條記錄時,發現rownum為1不滿足條件,

然後就繼續查詢第2條記錄,但此時第2條記錄又被編號為1(也即rownum變為1),

所以查詢得到的始終是rownum=1,因此無法滿足約束,最終查詢的結果集為空。

所以有以下三種方法:比如查詢ac表中100到200條之間的資料

1.使用子查詢的方式

select * from (select b.*,rownum row_num from ac b order by rowid) a from a.row_num >100 and a.row_num <200  (這裡查相等時也可以用between and)

2.使用集合減minus運算,該操作返回在第乙個select中出現而不在第二個select中出現的記錄。

select * from ac where rownum < 200 minus select * from ac where rownum < 100;

3.使用使用集合交運算子intersect,這裡繞了乙個彎(不過這個彎實現了rownum大於某個數的查詢),它是首先利用a的方式查詢得到所有rownum大於100的記錄,然後再與rownum小於200的記錄集合做交運算

select aa,bb,cc

from (select aa,bb,cc,rownum as num from ac b)

where num > 100

intersect

select aa,bb,cc from ac where rownum < 200;

oracle中分頁查詢

上限條件必須放在子查詢,而下限條件必須放在外層查詢 rownum總是從1開始的,第一條不滿足去掉的話,第二條的rownum 又成了1 select from select rownum rowno,t.from tab t where rownum page size tab alias where...

Oracle中分頁查詢介紹

設有a表,pageindex 頁號 pagesize 頁大小 我們知oracle中提供了rownum欄位,我們可利用它實現分頁查詢 具體如 step1 先獲得乙個較大的父集,在構成此集合的過程中我們可以構建一定查詢規則 sql code select rownum as r,a.from a a o...

Oracle中分頁查詢語句

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