oracle中 rowid 和rownum的使用

2021-07-10 13:31:38 字數 913 閱讀 6624

(1)利用rowid 進行 查詢重複 

select e.rowid, e.* from test_idx e ;

select e.rowid, e.*

from test_idx e

where e.rowid > (select min(x.rowid)

from test_idx x

where x.col2 = e.col2);  --------  rowid 是 資料的實體地址  某一列的值相同時,其實體地址也是不同的 ; 可以通過這一特性進行了解 "大於最小的"

select e.rowid, e.*

from test_idx e

where e.rowid <(select max(x.rowid)

from test_idx x

where x.col2 = e.col2);  --------  rowid 是 資料的實體地址  某一列的值相同時,其實體地址也是不同的 ; 可以通過這一特性進行了解 "小於最大的"

當查詢的資料量太大,需要分批次進行處理便於匯出

(2) 分頁處理 使用rownum

但如果就是想要用 rownum > 5 這種條件的話話就要用巢狀語句,把 rownum 先生成,然後對他進行查詢。

select *

from (selet rownum as rn,student.* from student where ...)

where rn >5

顯示6-10條資料

select *

from (selet rownum as rn,student.* from student where ...)

where rn >5 and rn <=10 ;

更多相關oracle中rownum和rowid的區別可以參看   

謝謝

oracle中rownum和rowid的區別

rownum和rowid都是偽列,但是兩者的根本是不同的,rownum是根據sql查詢出的結果給每行分配乙個邏輯編號,所以你的sql不同也就會導致最終rownum不同,但是rowid是物理結構上的,在每條記錄insert到資料庫中時,都會有乙個唯一的物理記錄 例如 aaamgzaaeaaaaagaa...

oracle中rownum和rowid的區別

rowid就跟身份證一樣 一旦嬰兒 資料 出生,就不會變 rownum和rowid都是偽列,但是兩者的根本是不同的,rownum是根據sql查詢出的結果給每行分配乙個邏輯編號,所以你的sql不同也就會導致最終rownum不同,但是rowid是物理結構上的,在每條記錄insert到資料庫中時,都會有乙...

oracle中rownum和rowid的區別

rownum和rowid都是偽列,但是兩者的根本是不同的,rownum是根據sql查詢出的結果給每行分配乙個邏輯編號,所以你的sql不同也就會導致最終rownum不同,但是rowid是物理結構上的,在每條記錄insert到資料庫中時,都會有乙個唯一的物理記錄 例如 aaamgzaaeaaaaagaa...