> Faqs > SQL para contar los registros que tienen un campo con valor repetido

SQL para contar los registros que tienen un campo con valor repetido

Tengo una tabla en mysql con datos y quiero hacer una consulta select SQL para saber qué registros tienen el valor de un campo repetido. Por ejemplo, tengo una tabla de usuarios, los usuarios tienen email y quiero saber qué usuarios tienen el email repetido.

Respuestas

Para hacer esto necesitas hacer una sentencia SQL en la que selecciones los usuarios y los cuentes. Luego agrupas por email de usuario y utilizas la cláusula having para restringir los usuarios cuya cuenta ha sido mayor que uno.

Lo mejor es verlo con un ejemplo:

select email, count(email)
from usuario
group by email
having count(email)>1

Supongo que esto resuelve tu duda.

Alvaro Everlet
Funciona: SELECT T1.email, count(*) as cuenta FROM usuario T1 GROUP BY T1.email HAVING count(*) > 1 ORDER BY cuenta desc ;

La pregunta es algo antigua y la respuesta es correcta, pero querría añadir algo más...

Para identificar registros que tengan valores repetidos en una columna específica, puedes usar una combinación de GROUP BY y HAVING.

En tu caso, si lo que quieres es encontrar los correos electrónicos repetidos en una tabla de usuarios, puedes usar la siguiente consulta:

SELECT email, COUNT(email) AS cantidad
FROM usuarios
GROUP BY email
HAVING COUNT(email) > 1;

Sobre el SQL anterior cabe decir:

  1. GROUP BY email: Esto agrupará todos los registros de la tabla que tengan el mismo valor en la columna email.
  2. HAVING COUNT(email) > 1: Esto es la clave del resultado ya qe filtrará los resultados para mostrar solo los correos electrónicos que aparezcan más de una vez en la tabla.

El resultado te mostrará los correos electrónicos repetidos y cuántas veces se repiten en la tabla. Si también quieres ver los registros específicos que tienen esos correos electrónicos repetidos, tendrás que hacer una consulta adicional o usar una subconsulta.

Norberto
238 6 20 15