ORACLE中的偽列

2021-06-16 18:41:43 字數 843 閱讀 6354

-- oracle 中的偽列

----- 偽列就像表中的列一樣,但是在表中並不儲存。偽列只能查詢。不能進行增刪改工作。

----- rownum與rowid不同,rowid是插入記錄時生成,rownum是查詢資料時生成。rowid標識的是行的實體地址。rownum標識的是查詢結果中的行的次序。

---- 1. rowid

------ 表中的每一行記錄都有乙個實體地址。rowid 偽列就返回該行的實體地址

select rowid,dept_name from base_dept;

---  2. rownum

----- rownum為結果集中的每一行標識乙個行號。使用rownum偽列可以限制查詢結果集中返回的行數。

select rownum,dept_name from base_dept;

---案例5:查詢出工資最高的前5名員工的姓名、工資和工資。

---- 案例分析

---- 「工資最高的前5名」需要先降序排序,再取前5名,但是生成rownum操作比排序要早,排序時已經連同rownum一起排序了,

----- 因此不能直接在案例1的語句中直接加上order by就行,而是需要對排序的結果重新做二次查詢,產生新的rownum才能作為查詢的條件依據。

select rownum,t.* from (select ename,job,sal from emp order by sal desc) t  where rownum<=5

---  rownum 分頁

select * from (select rownum r,ename,job,sal from emp where rownum<=10) where r>5;

Oracle中的偽列

分頁查詢中,需要用到偽列rownum,如下 select from select rownum rn,name from cost where rownum 6 where rn 3 可是第一次用rownum,第二次用rn,位置不能變,否則出錯,第一次的rownum是oracle中的乙個虛擬列,rn...

Oracle中的偽列

分頁查詢中,需要用到偽列rownum,如下 select from select rownum rn,name from cost where rownum 6 where rn 3 可是第一次用rownum,第二次用rn,位置不能變,否則出錯,第一次的rownum是oracle中的乙個虛擬列,rn...

oracle中的偽列rownum

對於 oracle 的 rownum 問題,很多資料都說不支援 between.and,只能用以上符號 並非說用 between.and 時會提示sql語法錯誤,而是經常是查不出一條記錄來,還會出現似乎是莫名其妙的結果來,其實您只要理解好了這個 rownum 偽列的意義就不應該感到驚奇,同樣是偽列,...