Oracle如何進行分頁查詢

2021-09-12 10:32:21 字數 2116 閱讀 2047

在學習mysql時,我們對於查詢結果顯示可以使用limit來達到顯示前幾條資料或者分頁的效果,例如查詢員工表中編號前10的員工為

select * from emp e order by e.id limit 0,10;

(注意0是開始index,10代表顯示10條)

所以在實際應用中應該是這樣用的:

select * from table limit (pageno-1)*pagesize, pagesize;

(pageno為頁碼,pagesize是顯示的條數)

在這裡說了這麼多,接下來就是oracle資料庫中關於分頁查詢的知識點,首先,在oracle中是沒有用limit來達到該效果的可能,要想達到分頁的效果,首先需要知道rownum的使用,這裡就依次為大家介紹rownum的作用。第一種為非排序

top-n(就是用rownum時沒有order); 第二種為排序

top-n(就是rownum和order by 一起使用);最後也就是常用的oracle分頁查詢了。

rownum是虛列,值從1開始,不能用表名修飾(例如a.rownum是錯的)

查詢員工表中的前10條資料:

select

dept.department_id,

rownum

from

departments dept

where

rownum

<=10

由於rownum從1開始,所以是<=10

但類似的最後rownum判斷是》10為什麼查不到資料呢?

select dept.department_id, rownum

from departments dept

where rownum >10

我這裡的理解是這樣的:查不到資料,在第一條資料查出來之後,給賦值為rownum為1,但是rownum的約束條件為》10,所以該條資料不滿足要求,從下一條資料開始rownum為0,這樣一直下去,所以一直查不到資料

同樣的rownum !=10顯示的是前九條資料,而不是不等於10的資料,在rownum為10的時候,該條資料不符合要求,但下一條的rownum還是10,所以一直沒有資料。

select dept.department_id, rownum

from departments dept

where rownum !=10

對於如何查詢後面多少條的資料,就是接下來top-n查詢要實現的功能了

例如此處要查詢職業為』it_prog』的員工中工資最低的三位,這裡肯定就要使用到order by了,但是在使用order by和rownum的時候可能出現一些問題。

--錯誤寫法

select e.employee_id, e.salary

from employees e

where job_id ='it_prog' and rownum <= 3

order by salary asc --

正確寫法

select rownum,m.r,m.employee_id, m.salary

from (select  e.*,rownum r 

from employees  e

where  job_id ='it_prog'

order by salary asc) m

where rownum <= 3

根據以上**可以知道,由於order by一直在where條件之後執行,但是rownum又是在where中執行的,所以按照需求,rownum的判斷應該在order by之後

--查詢員工工資

(降序排序

)在第五頁的,每頁

4條內容

select*

from

(select

a.*,

rownumr

from

(select*

from

employees e

order

bysalary) a)

where

r between

17and20

類似於上面的top-n查詢,就是內層排序,外層設定範圍(可能中間還會有一層來選出rownum的值用來最後設定範圍)

如何進行模糊分頁

使用模糊分頁需要3個引數 關鍵字 key,當前頁 page,查詢內容個數 count 核心 所有選單列表 分頁 查詢所有菜品並分頁 listlist menuservice.foodlist key,pageutils.getcurrpage 1 6,6 request.setattribute p...

如何進行簡潔的分頁查詢 PageHelper

前幾天整理 的時候,發現了同事寫的分頁方法,感覺很有意思,在這裡記錄下來。首先是在pom.xml中引入該jar包 com.github.pagehelper pagehelper spring boot starter 1.1.3 接著在配置檔案中寫入配置 這是在yml檔案中的配置 pagehelp...

百萬條資料如何進行分頁查詢

今天面試被問到一張表 有500w條資料,如何進行分頁查詢,瞬間不知道怎麼回答,平時工作中沒接觸到這麼大的資料量。所以回家自己去實驗一下 建立一張user表 create table user id bigint 20 not null auto increment,username varchar ...