最近遇到這麼一個問題:要求删除表中重複的記錄。具體來說:比如有一張使用者表,使用者姓名不是主鍵可以重複,存在這種情況,一個使用者姓名被錄入了好幾次,如何删除重複的記錄,同時要保留一條該使用者錄。沒有具體說明保留那條記錄,隻要使用者姓名重複的保留一條即可。
示例:
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參考手冊中大多有講解。平時學習時,注意多看權威的參考資料,有助于全面掌握知識,并系統化,規範化。