rownum 是根據 sql 查詢出的結果給每行分配乙個邏輯編號, 每行資料會因為輸出的順序不同而獲得不同的邏輯編號, 編號是從 1 開始的;
select empno, rownum from emp;
-- 查詢 scott 用於 emp 表中, empno 和對應的 rownum
-- 錯誤演示:
select e.rownum from emp;
-- 此種寫法是錯誤的!
-- 以下是所有錯誤範例
-- 錯誤 1:
select * from emp where rownum between 2
and5;
-- 錯誤 2:
select * from emp where rownum >= 2
and rownum <= 5;
解答: 為什麼不能直接在 where 子句中, 使用: rownum between 2 and 5 ?
-- 輸出結果的前 n 條資料, 可以通過 rownum 是實現
select empno from emp where rownum < 5;
-- 輸出前 4 條資料
分頁查詢是經常用到的一種應用需求
本文演示 3 種實現方式:
-- way 1:
select * from (
select e.*, rownum rn from emp e) a
where a.rn between 2
and5;
-- 效率最低
-- way 2:
select e.*, rownum rn from emp e where rownum <=5
minus
select e.*, rownum rn from emp e where rownum <=1;
-- 效率較高
-- way 3:
select * from (
select e.*, rownum rn from emp where rownum <=5) a
where a.rn>=2;
-- 效率最高
-- 暫時沒有實現
請參看, conan zone 部落格中的總結: 利用rownum做分組子排序 oracle 偽列rownum 與 分頁
因為rownum是對結果集加的乙個偽列,即先查到結果集之後再加上去的乙個列 強調 先要有結果集 簡單的說 rownum 是對符合條件結果的序列號。它總是從1開始排起的。所以你選出的結果不可能沒有1,而有其他大於1的值。所以select from tab1 where rownum n n大於1 是得...
oracle分頁 使用rownum 偽列
connected to oracle database 10g enterprise edition release 10.2.0.1.0 connected as tudou sql select from temp1 name age 土土 22 z壯 23 z 25 a 28 奇才 29 才...
Oracle的資料偽列 ROWNUM
資料庫 oracle11g 資料偽列 rownum 範例 查詢前5條記錄 select rownum,empno,job,hiredate,sal from emp where rownum 5 範例 查詢 6 10 條記錄 按照正常的思維肯定直接進行between and的判斷 如 select ...