26

If I have data like this:

Key Name
1 Dan
2 Tom
3 Jon
4 Tom
5 Sam
6 Dan

What is the SQL query to bring back the records where Name is repeated 2 or more times?

So the result I would want is

Tom
Dan

3 Answers 3

40

Couldn't be simpler...

Select Name, Count(Name) As Count 
    From Table
    Group By Name
    Having Count(Name) > 1
    Order By Count(Name) Desc

This could also be extended to delete duplicates:

Delete From Table
Where Key In (
    Select Max(Key)
        From Table
        Group By Name
        Having Count(Name) > 1
    )
Sign up to request clarification or add additional context in comments.

1 Comment

For delete, you should leave only the Min(key) and delete other entries. Query should be modified as "...where Key NOT IN ( select Min(Key) ...."
4
select name from table group by name having count(name) > 1

Comments

2

This could also be accomplished by joining the table with itself,

SELECT DISTINCT t1.name
FROM    tbl t1
        INNER JOIN tbl t2
        ON      t1.name = t2.name
WHERE   t1.key         != t2.key;

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.