MySQL - Borrar duplicados

   
Vista:

Borrar duplicados

Publicado por david (1 intervención) el 03/11/2010 11:12:05
Buenas tengo una tabla con elementos duplicados y quiero borrar esos elementos y quedar sólo con uno de cada.

Por ejemplo quiero tener una persona de cada edad y en mi tabla aparecen dos personas con 20 años y tres con 23, lo que yo quiero es quedar con sólo una persona de 20 años y una de 23.

No consigo quedarme con una persona de cada, me quedo conuna persona pero solo de una edad, por ejemplo conuna de 20 pero me borra todas las de 23, esta es la consulta que tengo hecha

DELETE Tabla1.edad, Tabla1.nombre
FROM Tabla1
WHERE (((Tabla1.edad) In (SELECT [edad] FROM [Tabla1] As Tmp GROUP BY [edad] HAVING Count(*)>1 ))) AND Tabla1.Id1 < (SELECT MAX(Tabla1.id1) FROM Tabla1);

¿Alguien podría ayudarme con la consulta?

Gracias
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

RE:Borrar duplicados

Publicado por Bosco Garita (2 intervenciones) el 03/11/2010 21:02:33
Si la integridad referencial de tu BD te permite borrar todos los registros de tu tabla puedes usar esto:

Create temporary table temp
Select distinct * from Tabla1;
Select * from temp;
Delete * from Tabla1;
insert into Tabla1
select * from temp;
drop table temp;
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

RE:Borrar duplicados

Publicado por Leonardo Josué (81 intervenciones) el 03/11/2010 21:17:31
Buenas Tardes David a ver si entendí:

creo que tu tabla tiene más o menos los siguientes datos:

id1|Edad|Nombre
----------------------------------------
1|20|José
2|23|René
3|23|Leonardo
4|20|Luis
5|23|Jaime
6|24|Hugo

Puedes ejecutar estas dos intrucciones:

ALTER IGNORE TABLE TuTabla ADD UNIQUE INDEX(Edad);
ALTER TABLE TuTabla DROP KEY Edad;

De tal manera que tu tabla quedará así:

id1|Edad|Nombre
----------------------------------------
1|20|José
2|23|René
6|24|Hugo

Es decir sólo un registro (el primero en la tabla) para cada edad. Recuerda respaldar tu información por aquello de las dudas.

Saludos y espero que te pueda servir
Leo.
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