Oracle刪除重復記錄的幾種方式

  [html]

  Oracle刪除重復記錄的幾種方式

  如果把一個文件多次導入數據庫,可能會引入重復記錄,那么有哪些方法可,江蘇會計證考試報名,2022年會計從業資格考試報名,2022年江蘇會計從業證報名,2022年江蘇會計從業考試報名,江蘇2022年會計從業資格考試成報名,2022年江蘇會計從業考試,會計電算化考試試題,2022年江蘇會計電算化,江蘇會計電算化試題,江蘇會計電算化考試,江蘇初級會計電算化,江蘇初級會計電算化考試">

免费看欧美黑人毛片-免费看毛片网站-免费看毛片的网站-免费看久久-中文字幕日韩欧美-中文字幕日韩精品一区

您現在的位置:首頁 > IT認證 > oracle認證 >

Oracle開發技術:Oracle刪除重復記錄的幾種方式


Oracle開發技術:Oracle刪除重復記錄的幾種方式 Oracle刪除重復記錄的幾種方式   [html]   Oracle刪除重復記錄的幾種方式   如果把一個文件多次導入數據庫,可能會引入重復記錄,那么有哪些方法可以刪除重復記錄呢?   REATE TABLE tbl_test(   SER_NO NUMBER,   FST_NM VARCHAR2(30),   DEPTID NUMBER,   CMNT VARCHAR2(30));   INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');   INSERT INTO tbl_test VALUES(2, 'bbbbb', 2005, 'yyy');   INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');   INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx');   INSERT INTO tbl_test VALUES(3, 'ccccc', 2005, 'zzz');   INSERT INTO tbl_test VALUES(2, 'bbbbb', 2005, 'yyy');   1.Using MIN(rowid) 最常用的方法,但是數據量大的話執行會很長時間   DELETE FROM tbl_test   WHERE ROWID NOT IN (SELECT MIN (ROWID)   FROM tbl_test   GROUP BY ser_no, fst_nm, deptid, cmnt); 2.Using MIN(rowid) & Join 跟第一條差不多   DELETE FROM tbl_test t   WHERE t.ROWID NOT IN (SELECT MIN (b.ROWID)   FROM tbl_test b   WHERE b.ser_no = t.ser_no   AND b.fst_nm = t.fst_nm   AND b.deptid = t.deptid   AND b.cmnt = t.cmnt);   3.Using Subquery   DELETE FROM tbl_test   WHERE ser_no IN (SELECT ser_no FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)   AND fst_nm IN (SELECT fst_nm FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)   AND deptid IN (SELECT deptid FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)   AND cmnt IN (SELECT cmnt FROM tbl_test GROUP BY ser_no, fst_nm, deptid, cmnt HAVING COUNT (*) > 1)   AND ROWID NOT IN (SELECT MIN (ROWID)   FROM tbl_test   GROUP BY ser_no, fst_nm, deptid, cmnt   HAVING COUNT (*) > 1)   4. Using Nested Subqueries   DELETE FROM tbl_test a WHERE (a.ser_no, a.fst_nm, a.deptid, a.cmnt) IN (SELECT b.ser_no, b.fst_nm, b.deptid, b.cmnt   FROM tbl_test b WHERE a.ser_no = b.ser_no AND a.fst_nm = b.fst_nm AND a.deptid = b.deptid AND a.cmnt = b.cmnt AND   a.ROWID > b.ROWID);   5. Using Analytic Fucntions: 對于大表這是最有效的方法   DELETE FROM tbl_test WHERE ROWID IN (SELECT rid FROM (SELECT ROWID rid,   ROW_NUMBER () OVER (PARTITION BY ser_no, fst_nm, deptid, cmnt ORDER BY ROWID) rn FROM tbl_test)WHERE rn <> 1);   6. CREATE-DROP-RENAME 對資源使用比較合理,特別對于大表。但是如果需要回滾則會產生大量undo日志信息。   CREATE TABLE tbl_test1 NOLOGGING AS SELECT tbl_test .*   FROM tbl_test tbl_test WHERE ROWID IN (SELECT rid   FROM (SELECT ROWID rid, ROW_NUMBER() OVER (PARTITION BY ser_no, fst_nm, deptid, cmnt ORDER BY ROWID) rn   FROM tbl_test) WHERE rn=1);   DROP TABLE tbl_test; --drop the original table with lots of duplicate   RENAME tbl_test1 TO tbl_test; -- your original table without duplicates.

相關文章

無相關信息
更新時間2022-03-13 11:18:58【至頂部↑】
聯系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網站糾錯二維碼手機版

客服電話:




主站蜘蛛池模板: 奇奇颗颗说恐龙| 阿莫西林原研药| a day to remember英语作文| 抖隐| 刘淑华| 98%| 新红楼梦惊艳版| 声入人心| 丰崎爱生| 挤黑头痘痘视频| 谭咏麟个人资料简介| 山上的小屋 残雪| 变态的视频| 孙炜| 湖南金鹰卡通节目表| 太医派的开胃汤配方| 杨玉环秘史| 拒不参加学校肺结核检查| 女同版痴汉电车| 马文的战争电影完整视频观看 | 心动电影| 超级飞侠17季| 四川影视文艺频道| 黄大年主要事迹概括| 在线免费污视频| 蓝心妍的电影《极乐宝鉴》免费国语| 绅士联盟| 小数加减法100道题| 刑道荣| 寰宇地理| 水儿武士电影完整免费观看| 菲律宾电影甜蜜宝贝| 黄柳霜| 秀场视频高清完整版| 黄视频在线播放| 辰巳ゆい| 77316电影| 色戒在线观看视频| 卢靖姗老公是谁| 红星闪闪简谱| 儿童手绘中国地图|