刪除表中重覆記錄的方式

2021-09-01 01:14:11 字數 599 閱讀 9426

(1)通過建立臨時表來實現

sql>create table temp_emp as (select distinct * from employee)

sql> truncate table employee; (清空employee表的資料)

sql> insert into employee select * from temp_emp; (再將臨時表裡的內容插回來)

( 2)通過唯一rowid實現刪除重覆記錄.在oracle中,每一條記錄都有乙個rowid,rowid在整個資料庫中是唯一的,rowid確定了每條記錄是在oracle中的哪乙個資料檔案、塊、行上。在重複的記錄中,可能所有列的內容都相同,但rowid不會相同,所以只要確定出重覆記錄中那些具有最大或最小rowid的就可以了,其餘全部刪除。

(3)也是通過rowid,但效率更高。

sql>delete from employee where rowid not in (

select max(t1.rowid) from employee t1

group by t1.emp_id,t1.emp_name,t1.salary

);--這裡用min(rowid)也可以。

如何刪除表中重覆記錄?

最近專案中遇到了乙個需求,即 如何刪除表中重覆記錄,使得所有重複的記錄都只保留一行?在google了半個小時之後,發現居然沒有乙個是正常可用的,於是乎只好自己動手寫了乙個。因為即便是grails提供了很好的gorm,但是使用sql仍然不可能完全避免,因此把它共享出來,也符合咱們 的 共享開發經驗 的...

oracle 刪除表中重覆記錄

表demo是重複拷貝自dba objects,有88萬左右,不重複的是27323,沒有索引 方法一 delete from demo a where a.rowid select max rowid from demo b where b.object id a.object id 耗時 幾個小時以...

表刪除重覆記錄 小記

刪除資料庫中重覆記錄方法 表test loge 有兩個字段,乙個是 id,乙個是 name 我們需要刪除多餘的行 1 使用rowid 保留rowid 最大的值 delete from test loge a where rowid select max rowid from test loge b ...