solo saber repetidos repetido registros registro mostrar hay eliminar duplicados contar campos buscar agrupar mysql sql search duplicates

saber - Cómo verificar si hay duplicados en la tabla mysql en varias columnas



mostrar un solo registro repetido sql (6)

Tengo una mesa de jugadores de béisbol (todos los 1000), con campos:

mysql> describe person; +-----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | firstname | varchar(30) | NO | | NULL | | | lastname | varchar(30) | NO | | NULL | | +-----------+-------------+------+-----+---------+----------------+

Pero creo que hay algunos jugadores que se han agregado dos veces. ¿Cómo puedo revisar y verificar cuántas apariciones de un nombre de pila particular, apellido combo?


Esto proporciona la lista de duplicados:

SELECT firstname, lastname, COUNT(*) FROM person GROUP BY firstname, lastname HAVING COUNT(*) > 1;

Si desea ver los recuentos de cada fila, elimine la cláusula having:

SELECT firstname, lastname, COUNT(*) FROM person GROUP BY firstname, lastname;


Para encontrar registros duplicados (por ejemplo, para encontrar la combinación de nombre de usuario y contraseña de registros duplicados) en una tabla, use la consulta siguiente;

SELECT em.* FROM employee_master AS em JOIN (SELECT emp.login, emp.password, COUNT(*) FROM employee_master emp WHERE emp.login != '''' AND emp.password != '''' GROUP BY emp.login, emp.PASSWORD HAVING COUNT(*) > 1 ) AS dl WHERE em.login = dl.login AND em.password = dl.password;


Para obtener id''s de nombres duplicados y nombres, haga lo siguiente:

SELECT p1.id, p1.firstname, p1,lastname FROM person p1 INNER JOIN person p2 ON (p1.firstname = p2.firstname AND p1.lastname = p1.lastname AND p1.id <> p2.id);


Para una lista ordenada por el valor decreciente de la cantidad de copias:

SELECT firstname, lastname, COUNT(*) AS n FROM person GROUP BY firstname, lastname ORDER BY n DESC HAVING n > 1

La cláusula HAVING es la parte clave; es necesario filtrar los resultados después de la cláusula GROUP BY , ya que una cláusula WHERE filtra las filas antes de que se agrupen.


Si simplemente quiere borrar todo el duplicado, podría hacer una tabla temporal y llenarla con todos sus re data except the duplicate and them re-update you tabla principal.

La consulta para seleccionar los datos con duplicados sería este

SELECT DISTINCT firstname, lastname FROM table

Para obtener la lista completa de datos en su tabla

SELECT firstname, lastname, COUNT(*) AS n FROM person GROUP BY firstname, lastname ORDER BY lastname DESC HAVING n > 1

Con esta última consulta obtendrá una lista de datos ordenados por apellido alfabéticamente.


SELECT firstname, lastname, count(id) count FROM person WHERE firstname = ? AND lasttname = ? GROUP BY firstname, lastname