Encuentra filas que tienen el mismo valor en una columna en MySQL
En una tabla [miembro], algunas filas tienen el mismo valor para la email
columna.
login_id | email
---------|---------------------
john | john123@hotmail.com
peter | peter456@gmail.com
johnny | john123@hotmail.com
...
Algunas personas usaron un login_id diferente pero la misma dirección de correo electrónico; no se estableció ninguna restricción única en esta columna. Ahora necesito encontrar estas filas y ver si se deben eliminar.
¿Qué declaración SQL debo usar para encontrar estas filas? (MySQL5)
Esta consulta le dará una lista de direcciones de correo electrónico y cuántas veces se utilizan, con las direcciones más utilizadas primero.
SELECT email,
count(*) AS c
FROM TABLE
GROUP BY email
HAVING c > 1
ORDER BY c DESC
Si quieres las filas completas:
select * from table where email in (
select email from table
group by email having count(*) > 1
)
select email from mytable group by email having count(*) >1
Aquí hay una consulta para encontrar email
los que se usan para más de uno login_id
:
SELECT email
FROM table
GROUP BY email
HAVING count(*) > 1
Necesitará una segunda consulta (anidada) para obtener la lista de login_id
by email
.
La primera parte de la respuesta aceptada no funciona para MSSQL.
Esto funcionó para mí:
select email, COUNT(*) as C from table
group by email having COUNT(*) >1 order by C desc