Removing duplicate records from database
I had to remove some dups from one of the tables in my database. Well, there is a couple of ways to do that. They are: using distinct, using derived table, correlated subqueries and using dymanic sql. Each of these technique has its own pros and cons. Well, I prefer using correlated subqueries over to others bases on the scenario that I have. It is always debatable and based on the actual situation and usage.
Here is what I did for my table.
CREATE TABLE DuplicateRecords (
TABLE DuplicateRecords (Id INT IDENTITY,
INT IDENTITY,Name VARCHAR(50))
Name VARCHAR(50))
GO
INSERT DuplicateRecords (Name)
DuplicateRecords (Name)SELECT 'Sanjeeb Sarangi' UNION ALL
SELECT 'Sanjeeb Sarangi' UNION ALLSELECT 'Atoshi Sahoo' UNION ALL
SELECT 'Atoshi Sahoo' UNION ALLSELECT 'Jim Boone' UNION ALL
SELECT 'Jim Boone' UNION ALLSELECT 'Trevor Carnahan' UNION ALL
SELECT 'Trevor Carnahan' UNION ALLSELECT 'Atoshi Sahoo' UNION ALL
SELECT 'Atoshi Sahoo' UNION ALLSELECT 'Sanjeeb Sarangi' UNION ALL
SELECT 'Sanjeeb Sarangi' UNION ALLSELECT 'Chad Justice' UNION ALL
SELECT 'Chad Justice' UNION ALLSELECT 'Harpo Marx' UNION ALL
SELECT 'Harpo Marx' UNION ALLSELECT 'Atoshi Sahoo' UNION ALL
SELECT 'Atoshi Sahoo' UNION ALLSELECT 'Trevor Carnahan' UNION ALL
SELECT 'Trevor Carnahan' UNION ALLSELECT 'Sanjeeb Sarangi' UNION ALL
SELECT 'Sanjeeb Sarangi' UNION ALLSELECT 'Chad Justice' UNION ALL
SELECT 'Chad Justice' UNION ALLSELECT 'Zeppo Marx' UNION ALL
SELECT 'Zeppo Marx' UNION ALLSELECT 'Sanjeeb Sarangi' UNION ALL
SELECT 'Sanjeeb Sarangi' UNION ALLSELECT 'Vinay Raturi' UNION ALL
SELECT 'Vinay Raturi' UNION ALLSELECT 'Daniel Neely' UNION ALL
SELECT 'Daniel Neely' UNION ALLSELECT 'Vinay Raturi'
SELECT 'Vinay Raturi'SELECT * FROM DuplicateRecords
* FROM DuplicateRecordsDELETE DuplicateRecords
DuplicateRecordsWHERE Id > (
Id > (SELECT MIN(Id)
SELECT MIN(Id)FROM DuplicateRecords dupsWHERE dups.Name = DuplicateRecords.Name
FROM DuplicateRecords dupsWHERE dups.Name = DuplicateRecords.Name
WHERE dups.Name = DuplicateRecords.Name)
SELECT * FROM DuplicateRecords
* FROM DuplicateRecordsDROP TABLE DuplicateRecords
TABLE DuplicateRecords