(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...