Ответ 1
Попробуйте этот sql-запрос:
select distinct a.name, a.id
from table a, table b
where a.name = b.name and a.id != b.id
У меня есть база данных 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
В то время как я хочу вернуть все возвращенные строки.
Любая помощь будет принята с благодарностью, спасибо.
Попробуйте этот sql-запрос:
select distinct a.name, a.id
from table a, table b
where a.name = b.name and a.id != b.id
Вы можете сделать это с помощью дополнительного выбора
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
)
Попробуйте
SELECT Name, COUNT(Name) AS NumOccurrences
FROM table
GROUP BY Name
HAVING COUNT(*) > 0