欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Oracle中查找和刪除重復記錄方法簡(jiǎn)介
平時(shí)工作中可能會(huì )遇到當試圖對庫表中的某一列或幾列創(chuàng )建唯一索引時(shí),系統提示 ORA-01452 :不能創(chuàng )建唯一索引,發(fā)現重復記錄。
下面總結一下幾種查找和刪除重復記錄的方法(以表CZ為例):
表CZ的結構如下:
 
刪除重復記錄的方法原理:
(1).在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數據庫中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個(gè)數據文件、塊、行上。
(2).在重復的記錄中,可能所有列的內容都相同,但rowid不會(huì )相同,所以只要確定出重復記錄中那些具有最大rowid的就可以了,其余全部刪除。
重復記錄判斷的標準是:
C1,C10和C20這三列的值都相同才算是重復記錄。
經(jīng)查看表CZ總共有16條記錄:
 
1.查找重復記錄的幾種方法:
 
2.刪除重復記錄的幾種方法:
(1).適用于有大量重復記錄的情況(在C1,C10和C20列上建有索引的時(shí)候,用以下語(yǔ)句效率會(huì )很高):
(2).適用于有少量重復記錄的情況(注意,對于有大量重復記錄的情況,用以下語(yǔ)句效率會(huì )很低):
 
(3).適用于有少量重復記錄的情況(臨時(shí)表法):
 
 
(4).適用于有大量重復記錄的情況(Exception into 子句法):
采用alter table 命令中的 Exception into 子句也可以確定出庫表中重復的記錄。這種方法稍微麻煩一些,為了使用“excepeion into ”子句,必須首先創(chuàng )建 EXCEPTIONS 表。創(chuàng )建該表的 SQL 腳本文件為 utlexcpt.sql 。對于win2000系統和 UNIX 系統, Oracle 存放該文件的位置稍有不同,在win2000系統下,該腳本文件存放在$ORACLE_HOMEOra90rdbmsadmin 目錄下;而對于 UNIX 系統,該腳本文件存放在$ORACLE_HOME/rdbms/admin 目錄下。
具體步驟如下:
 
SQL>@?/rdbms/admin/utlexcpt.sql
Table created.
SQL>desc exceptions
Name Null? Type
-----------------------------------------
ROW_ID ROWID
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
CONSTRAINT VARCHAR2(30)
SQL>alter table cz add constraint
cz_unique unique(c1,c10,c20) exceptions into exceptions;
*
ERROR at line 1:
ORA-02299: cannot validate (TEST.CZ_UNIQUE) - duplicate keys found
SQL>create table dups as select
* from cz where rowid in (select row_id from exceptions);
Table created.
SQL>select * from dups;
C1 C10 C20
---------- ---------- ---
1 2 dsf
1 2 dsf
1 2 dsf
1 2 dsf
2 3 che
1 2 dsf
1 2 dsf
1 2 dsf
1 2 dsf
2 3 che
2 3 che
2 3 che
2 3 che
3 4 dff
3 4 dff
3 4 dff
16 rows selected.
SQL>select row_id from exceptions;
ROW_ID
------------------
AAAHD/AAIAAAADSAAA
AAAHD/AAIAAAADSAAB
AAAHD/AAIAAAADSAAC
AAAHD/AAIAAAADSAAF
AAAHD/AAIAAAADSAAH
AAAHD/AAIAAAADSAAI
AAAHD/AAIAAAADSAAG
AAAHD/AAIAAAADSAAD
AAAHD/AAIAAAADSAAE
AAAHD/AAIAAAADSAAJ
AAAHD/AAIAAAADSAAK
AAAHD/AAIAAAADSAAL
AAAHD/AAIAAAADSAAM
AAAHD/AAIAAAADSAAN
AAAHD/AAIAAAADSAAO
AAAHD/AAIAAAADSAAP
16 rows selected.
SQL>delete from cz where rowid in
( select row_id from exceptions);
16 rows deleted.
SQL>insert into cz select distinct * from dups;
3 rows created.
SQL>select *from cz;
C1 C10 C20
---------- ---------- ---
1 2 dsf
2 3 che
3 4 dff
4 5 err
5 3 dar
6 1 wee
7 2 zxc
7 rows selected.
從結果里可以看到重復記錄已經(jīng)刪除。
 
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/vesanchen/archive/2009/04/09/4057810.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle中用Rowid查找和刪除重復記錄
oracle與WEB分頁(yè)技術(shù)
索引組織表 IOT (ORACLE)
oracle lock mechanism internal
oracle 10g中的ROWID
一條SQL引發(fā)的“血案”:與SQL優(yōu)化相關(guān)的4個(gè)案例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久