MySQL - eliminar registros duplicados

 
Vista:

eliminar registros duplicados

Publicado por Alfonso (2 intervenciones) el 31/12/2015 20:01:46
Hola buen dia,
me podrian ayudar con una sintaxis para eliminar registros duplicados solo que el primer campo es un numero auto incrementable y el tercer campo hace referencia a otra tabla como puedo eliminarlos sin que afecte a otra tabla.
la estructura de la tabla es la siguiente

id nombre num_col cod_postal
1 juan 23 44523
2 juan 23 44523
3 pablo 12 44231

entonces aqui los unicos que se duplican son nombre y num_col porque cod_postal puede haber varios y id es incrementable uno en uno, entonce como hacer para borrar los duplicados sin que afecte o en todo casa cual seria el resultado de borrar uno de los registros duplicados
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

eliminar registros duplicados

Publicado por Alfonso (2 intervenciones) el 31/12/2015 20:27:06
aplico la siguiente sentencia para consultar registros duplicados
1
2
3
4
SELECT nombre, num_col, cod_postal, COUNT(*) as Duplicados
FROM registro
GROUP BY nombre, num_col, cod_postal
HAVING COUNT(*)>1;

me muestra la siguiente consulta;
id nombre num_col cod_postal Duplicados
1 juan 23 44523 2
3 pablo 12 44231 3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

eliminar registros duplicados

Publicado por Hugo QN (32 intervenciones) el 07/01/2016 19:46:11
hola Alfonso.

a su select agrega este campo MAX(id) AS segundoid, esto devolverá el ultimo id de los duplicados; este select convierte como tabla en una nuevo select a la misma tabla.

SELECT *
FROM registro,
(SELECT.....) duplica
WHERE duplica.segundoid = registro.id;

te devolverá solo el último registro duplicado, solo aplida el DELETE a la sentencia y listo, puedes ejecutar cuantas veces gustes si algun dato tiene mas de 2 registros duplicados esta sentencia eliminará hasta que quede solo 1 y de menor ID .

espero te sirva.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar