За да изброите всички аномалии:
SELECT name, count(*) FROM TableA GROUP BY name HAVING count(*) > 1;
Има няколко начина да се справите с изтриването на дублирането и пътят ви ще зависи до голяма степен от броя на дублирането, което имате.
Вижте това ТАКА въпрос за начините да ги премахнете от вашата маса.
Ето решението, което предоставих там:
-- Setup for example
create table people (fname varchar(10), lname varchar(10));
insert into people values ('Bob', 'Newhart');
insert into people values ('Bob', 'Newhart');
insert into people values ('Bill', 'Cosby');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Adam', 'Sandler');
-- Show table with duplicates
select * from people;
-- Create table with one version of each duplicate record
create table dups as
select distinct fname, lname, count(*)
from people group by fname, lname
having count(*) > 1;
-- Delete all matching duplicate records
delete people from people inner join dups
on people.fname = dups.fname AND
people.lname = dups.lname;
-- Insert single record of each dup back into table
insert into people select fname, lname from dups;
-- Show Fixed table
select * from people;