Подтвердить что ты не робот

Показать все строки в MySQL, которые содержат одно и то же значение

У меня есть база данных MySQL:

ID | Name
1  | Bob
2  | James
3  | Jack
4  | Bob
5  | James

Как мне вернуть список всех столбцов, где одно и то же имя появляется более одного раза, например, я хотел бы вернуть это:

1  | Bob
2  | James
4  | Bob
5  | James

Я написал запрос на подсчет:

SELECT Name, COUNT(Name) 
AS NumOccurrences 
FROM table 
GROUP BY Name 
HAVING ( COUNT(Name) > 1 )

Но это просто возвращает что-то вроде этого:

Bob   | 2
James | 2

В то время как я хочу вернуть все возвращенные строки.

Любая помощь будет принята с благодарностью, спасибо.

4b9b3361

Ответ 1

Попробуйте этот sql-запрос:

select distinct a.name, a.id 
from table a, table b 
where a.name = b.name and a.id != b.id

Ответ 2

Вы можете сделать это с помощью дополнительного выбора

SELECT * FROM table WHERE Name IN (
    SELECT Name FROM table GROUP BY Name HAVING count(*) > 1
)

Кроме того, если ваше различие соответствует нескольким столбцам, вы можете использовать декартовые множества:

SELECT * FROM table WHERE (firstName, lastName) IN (
    SELECT firstName, lastName FROM table GROUP BY firstName, lastName HAVING count(*) > 1
)

Ответ 3

Попробуйте

SELECT Name, COUNT(Name) AS NumOccurrences 
FROM table 
GROUP BY Name 
HAVING COUNT(*) > 0