1. 程式人生 > >偽列、去重、分頁

偽列、去重、分頁

偽列並不是使用者在建立資料庫物件時由使用者完成的,而是Oracle自動幫助使用者建立的。
偽列分為兩種,一種是rowid一種是rownum
ROWID:在資料表中每一行所儲存的記錄,實際上Oracle都會預設為每條記錄分配一個唯一的地址編號。

rowid主要用途是用於去除重複資料,
例如:mydept表中由於操作失誤所以導致mydept表中有許多的重複資料。要求使用者講所有重複資料刪除到只剩一條。
DELETE FROM mydept WHERE ROWID NOT IN( SELECT MIN(ROWID) FROM mydept GROUP BY deptno) ;

ROWNUM:一個數據行編號的偽列,他的內容是在使用者查詢資料的時候,為使用者動態分配的一個數字。

rownum主要用途是分頁
例如:
取出一個查詢的第1行記錄
SELECT * FROM emp WHERE ROWNUM=1 ;
取出一個查詢的前5行記錄
SELECT * FROM
(SELECT empno,ename,job,hiredate,sal,mgr,deptno,ROWNUM rn FROM emp WHERE ROWNUM<=5) temp
WHERE temp.rn>0 ;
顯示僱員表中的6~10條記錄
SELECT * FROM (SELECT empno,ename,job,hiredate,sal,mgr,deptno,ROWNUM rn
FROM emp WHERE ROWNUM<=10) temp
WHERE temp.rn>5