Given a table with two columns, Id and Name, if the same Name appears more than once, delete the duplications.
| 1 | AA | 
| 2 | AA | 
| 3 | D | 
| 4 | F | 
| 5 | D | 
create table MyTable (Id int identity(1, 1) primary key , Name varchar(255));
insert into MyTable (Name) Values ('AA');
insert into MyTable (Name) Values ('AA');
insert into MyTable (Name) Values ('D');
insert into MyTable (Name) Values ('F');
insert into MyTable (Name) Values ('D');
select Name, MIN(Id) as id into distincts from MyTable group by Name
select Name, COUNT(*) as count into duplicates from MyTable group by Name Having COUNT(*) > 1
select * from MyTable
delete from MyTable
where (exists (select * from duplicates where duplicates.Name=MyTable.Name))
and (not exists (select * from distincts where distincts.id=MyTable.Id))
select * from MyTable
Comments
Post a Comment