3

What is the simplest way to delete records with duplicate name in a table? The answers I came across are very confusing.

Related:

Removing duplicate records from table

4
  • Is there a key besides the name? Do you want to delete ALL or ALL but ONE? Commented May 8, 2009 at 19:39
  • Are they true duplicates in that every column of both rows is identical? Commented May 8, 2009 at 19:40
  • Also, what's the target DBMS? Commented May 8, 2009 at 19:40
  • There was a foreign key and I had to remove it. They were not identical rows and had a unique primary key 'id' Commented May 8, 2009 at 19:42

2 Answers 2

5

I got it! Simple and it worked great.

delete 
   t1 
from 
   tTable t1, tTable t2 
where 
   t1.locationName = t2.locationName and  
   t1.id > t2.id 

http://www.cryer.co.uk/brian/sql/sql_delete_duplicates.htm

Sign up to request clarification or add additional context in comments.

5 Comments

answer your own question and get rep. interesting.
I don't see a problem with that since answering even your own question can provide value to the community.
I agree. Some users are caught up in a rep points competition. I could have not answered my question, but I wanted to save and share it for my own reference and for the community. This question has been asked before on stack overflow, but the answers are not as straight forward (most use cursors or for loops).
There's even a badge for answering your own question and getting votes. stackoverflow.com/badges/14/self-learner
you don't get rep for answering. but if other people find it helpful, then you have actually helped others, so i'd say it's deserved.
0

SQL Server 2005:

with FirstKey
AS
(
    SELECT MIN(ID), Name, COUNT(*) AS Cnt
      FROM YourTable
     GROUP BY Name
     HAVING COUNT(*) > 1
)
DELETE YourTable
  FROM YourTable YT
  JOIN FirstKey FK ON FK.Name = YT.Name AND FK.ID != YT.ID

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.