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

StackOverflow https://stackoverflow.com/questions/3196

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

Итак, результат, которого я бы хотел, это

 +---+
 |Tom|
 +---+
 |Dan|
 +---+
Это было полезно?

Решение

Проще и быть не может...

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)

Другие советы

select name from table group by name having count(name) > 1

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

SELECT DISTINCT t1.name
FROM    tbl t1
        INNER JOIN tbl t2
        ON      t1.name = t2.name
WHERE   t1.key         != t2.key;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top