天天看點

oralce與mysql中,如何删除重複記錄

最近遇到這麼一個問題:要求删除表中重複的記錄。具體來說:比如有一張使用者表,使用者姓名不是主鍵可以重複,存在這種情況,一個使用者姓名被錄入了好幾次,如何删除重複的記錄,同時要保留一條該使用者錄。沒有具體說明保留那條記錄,隻要使用者姓名重複的保留一條即可。

示例:

animal 表:

create table animal (

id int ,

name varchar2(100),

sex varchar2(10)

);

添加記錄:

insert into animal values (1, 'tom', 'male');

insert into animal values (2, 'tom', 'female');

insert into animal values (3, 'tom', 'ff');

insert into animal values (4, 'lili', 'male');

id為1,2,3的三條記錄名字重了,要求隻保留一條,删除另外兩條。

oralce資料庫中,該問題解決方法的具體實作如下:

delete from animal a where rowid<(select max(b.rowid) from animal b where a.name=b.name);

結果:

剩下兩條記錄。一條name=lili,一條name=tom.

-----------------------------------------------------------------------------

mysql資料庫中,該問題解決方法的具體實作:

alter ignore table animal add unique index (name);

結果同上面。

總結:

類似問題oracle參考手冊,mysql參考手冊中大多有講解。平時學習時,注意多看權威的參考資料,有助于全面掌握知識,并系統化,規範化。