Найти строки, которые имеют одинаковое значение в столбце в 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