Найти строки, которые имеют одинаковое значение в столбце в MySQL

В таблице [member] некоторые строки имеют одинаковое значение для столбца email.

login_id | email
---------|---------------------
john     | [email protected]
peter    | [email protected]
johnny   | [email protected]
...

Некоторые люди использовали другой login_id, но тот же адрес электронной почты, ни одно уникальное ограничение не было установлено в этом столбце. Теперь мне нужно найти эти строки и посмотреть, следует ли их удалять.

Какой SQL-оператор следует использовать для поиска этих строк? (MySQL 5)

Ответ 1

Этот запрос предоставит вам список адресов электронной почты и сколько раз они будут использоваться с наиболее часто используемыми адресами.

select email, count(*) as c from table
group by email having c > 1
order by c desc

Если вам нужны полные строки:

select * from table where email in (
    select email from table
    group by email having count(*) > 1
)

Ответ 2

select email from mytable group by email having count(*) >1

Ответ 3

Вот запрос, чтобы найти email, который используется для более чем одного login_id:

SELECT email
FROM table
GROUP BY email
HAVING count(*) > 1

Вам понадобится второй (вложенный) запрос, чтобы получить список login_id на email.

Ответ 4

Первая часть принятого ответа не работает для MSSQL.
Это сработало для меня:

select email, COUNT(*) as C from table 
group by email having COUNT(*) >1 order by C desc

Ответ 5

используйте это, если ваш столбец электронной почты содержит пустые значения

 select * from table where email in (
    select email from table group by email having count(*) > 1 and email != ''
    )

Ответ 6

Спасибо, ребята:-) Я использовал ниже, потому что я только заботился об этих двух столбцах, а не о многом. Отлично работает

  select email, login_id from table
    group by email, login_id
    having COUNT(email) > 1