国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

TIP 如何為表加唯一約束(保存或者刪除冗余的數據)

2024-07-21 02:38:05
字體:
來源:轉載
供稿:網友

  前幾天還被人問起有沒有什么方法,在已有冗余的表上加唯一約束; 當然要刪除冗余的數據了;我告訴他
  
  SELECT * FROM emp a
  WHERE rowid > ANY
  (SELECT rowid FROM emp b
   WHERE a.ename = b.ename
  )
  可以找到冗余的數據
  今個發現還有一個比較簡便的方法,如下使用 exceptions into exceptions;
  
  SQL> create table t ( a int, b int, c int );
  
  表已創建。
  
  SQL> insert into t select rownum,rownum+1,rownum+2 from all_objects where rownum
  <5;
  
  已創建4行。
  
  SQL> insert into t select *from t where rownum<3;
  
  已創建2行。
  
  SQL> commit;
  
  提交完成。
  
  SQL> select *from t;
  
       A     B     C
  ---------- ---------- ----------
       1     2     3
       2     3     4
       3     4     5
       4     5     6
       1     2     3
       2     3     4
  
  已選擇6行。
  SQL> create table exceptions(row_id rowid,
    2 owner varchar2(30),
    3 table_name varchar2(30),
    4 constraint varchar2(30));
  
  表已創建。
  
  SQL>
  SQL> alter table t add constraint t_unique
    2 unique(a,b,c) exceptions into exceptions;
  alter table t add constraint t_unique
                 *
  ERROR 位于第 1 行:
  ORA-02299: 無法驗證 (EPUSER.T_UNIQUE) - 未找到重復要害字
  
  SQL> create table dups
    2 as select *from t where rowid in (select row_id from exceptions);
  
  表已創建。
  
  SQL> select *from dups;
  
       A     B     C
  ---------- ---------- ----------
       1     2     3
       2     3     4
       1     2     3
       2     3     4
  
  SQL> select row_id from exceptions;
  
  ROW_ID
  ------------------
  AAAIEJAAKAAAyMSAAA
  AAAIEJAAKAAAyMSAAE
  AAAIEJAAKAAAyMSAAB
  AAAIEJAAKAAAyMSAAF
  
  SQL> delete from t where rowid in ( select row_id 2 from exceptions );
  
  已刪除4行。
  
  SQL> insert into t select distinct * from dups;
  
  已創建2行。
  
  SQL>
  SQL> commit;
  
  提交完成。
  
  SQL> select *from t;
  
       A     B     C
  ---------- ---------- ----------
       3     4     5
       4     5     6
       1     2     3
       2     3     4

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西乌珠穆沁旗| 礼泉县| 永川市| 石阡县| 茶陵县| 陆河县| 宝应县| 博乐市| 鄂州市| 达尔| 肃宁县| 汨罗市| 临洮县| 皮山县| 来宾市| 黎川县| 灌云县| 屯留县| 和硕县| 蛟河市| 蓬莱市| 呼伦贝尔市| 会泽县| 东平县| 泾川县| 卢龙县| 澄城县| 满城县| 潮州市| 治多县| 闽侯县| 宿迁市| 正镶白旗| 安岳县| 德钦县| 宣恩县| 巴林右旗| 汉中市| 如东县| 秦皇岛市| 钟祥市|