1. 程式人生 > >【經典SQL】刪除表中重複的記錄

【經典SQL】刪除表中重複的記錄

考慮到這種SQL用到的還是比較多,故在此記錄一下。

問題  從表中刪除重複的記錄,考慮如下表結構資訊:

create table dupes (id integer,name varchar(10));
insert into dupes values(1,'NAPOLEON');
insert into dupes values(2,'DYNAMITE');
insert into dupes values(3,'DYNAMITE');
insert into dupes values(4,'SHE SELLS');
insert into dupes values(5,'SHE SELLS');
insert into dupes values(6,'SHE SELLS');
insert into dupes values(7,'SHE SELLS');

select * from dupes order by 1;

對於每個像“SHE SELLS”這樣重複的姓名組,只任意保留其中一個的ID,並將其餘的記錄刪除掉。

解決方案如下:

delete from dupes where id not in (select min(id) from dupes group by name)