Oracle之rownum理解與分頁查詢的

2021-08-08 05:48:26 字數 1378 閱讀 3201

一、rownum是一種偽列,它會根據返回資料自動生成乙個數字,但是這個偽列的特殊性,我們在使用的時候需要注意以下幾點:

1、偽列要顯示必須寫出來,也就是放在select中;

2、rownum永遠從1開始、行號只能使用=;

oracle資料庫是行式資料庫,只有取了第一行才能取第二行,取了第二行才能取第三行.....oracle中rownum永遠從1開始的,所以rownum不能使用》、>=(

比如:蓋8層樓,1234層都沒有蓋,怎麼能蓋5678?)

3、rownum按照預設的順序生成,不會因為排序而發生變化;

比如、要查詢員工薪水前三名

select rownum,empno,ename,sal

from emp order by sal desc

where rownum<=3;

以上執行結果是錯的,只是取原來員工表前三個。以為以下sql執行結果如圖所示(未排序結果)

select rownum,empno,ename,sal

from emp;

接下來我們將該錶進行排序:

select rownum,empno,ename,sal

from emp order by sal desc;

執行結果如下:標明rownum不會因為排序而改變。

那麼正確的做法是進行子查詢

select * 

from (select rownum,empno,ename,sal

from emp

order by sal desc)

where rownum<=3;//這裡的rownum是新查詢表的偽列,是按照薪水排序的;

二、使用rownum進行分頁查詢

例子:

select r,empno,ename,sal from 

(select rownum r,empno,ename,sal from

(select rownum,empno,ename,sal

from emp

order by sal desc) e1

where rownum<=8) e2

where r>=5;//注:這裡的r不是e2表的行號,也不是e2表的偽列,而是e2表的第一列,所以可以使用》=

Oracle資料之rownum分頁

為獲取rownum在n1到n2之間的資料,先select所有小於n2值得資料並加上rownum值列,再外套乙個select語句查詢rownum大於n1的資料。select from select t1.rownum rn from table1 t1 where rownumn1 select fr...

oracle分頁,rownum的使用與理解

rownum可以理解為是乙個虛列 虛列 虛列 假設student學生表中有20條資料 兩種情況 select from student where rownum 10 或select from student where rownum 10 where rownum 表示式 rownum 1,表示式...

oracle之ROWNUM的查詢應用

1 在oracle資料庫中,rownum是oracle資料庫為查詢結果新增的乙個偽列。起始值為1,常用來處理查詢結果的分頁。2 由於rownum的特殊性,使用時候通常是分三層 第一層 先進行查詢及order by排序 第二層 查詢對應的列及rownum 第三層 在where 新增rouwnum條件 ...