SQL-запрос, количество и группировка по

Если у меня есть такие данные:

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

Что такое SQL-запрос для возврата записей, где Nameповторяется 2 или более раз?

Таким образом, результат, который я хотел бы,

 +---+
 |Tom|
 +---+
 |Dan|
 +---+
24 sql
6.08.2008 09:00:58
3 ОТВЕТА
РЕШЕНИЕ

Не может быть проще ...

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

Это также может быть расширено для удаления дубликатов:

Delete From Table
Where Key In (
    Select Max(Key)
        From Table
        Group By Name
        Having Count(Name) > 1
    )
38
7.10.2019 07:39:44
Для удаления вы должны оставить только Min (ключ) и удалить другие записи. Запрос должен быть изменен как "... где ключ НЕ
aartist 14.04.2012 06:23:49

Это также может быть достигнуто путем объединения таблицы с самим собой,

SELECT DISTINCT t1.name
FROM    tbl t1
        INNER JOIN tbl t2
        ON      t1.name = t2.name
WHERE   t1.key         != t2.key;
3
10.08.2008 01:31:05
select name from table group by name having count(name) > 1
4
17.08.2008 04:36:53