程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 在Oracle中如何利用Rowid查找和刪除表中的重復記錄

在Oracle中如何利用Rowid查找和刪除表中的重復記錄

編輯:Oracle數據庫基礎
平時工作中可能會遇到當試圖對庫表中的某一列或幾列創建唯一索引時,系統提示 ORA-01452 :不能創建唯一索引,發現重復記錄。

平時工作中可能會遇到當試圖對庫表中的某一列或幾列創建唯一索引時,系統提示 ORA-01452 :不能創建唯一索引,發現重復記錄。

下面總結一下幾種查找和刪除重復記錄的方法(以表CZ為例):
表CZ的結構如下:
SQL> desc cz
 Name                                      Null?    Type
 ----------------------------------------- -------- ------------------

 C1                                                 NUMBER(10)
 C10                                                NUMBER(5)
 C20                                                VARCHAR2(3)

刪除重復記錄的方法原理:
(1).在Oracle中,每一條記錄都有一個rowid,rowid在整個數據庫中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個數據文件、塊、行上。

(2).在重復的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重復記錄中那些具有最大rowid的就可以了,其余全部刪除。

重復記錄判斷的標准是:
C1,C10和C20這三列的值都相同才算是重復記錄。

經查看表CZ總共有16條記錄:
SQL>set pagesize 100
SQL>select * from cz;

         C1        C10 C20
---------- ---------- ---
         1 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved