Excluir dados duplicados em tabela MySQL

  • Autor Autor ubuwolf
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
ubuwolf

ubuwolf

Iota
Verificado
Verificación en dos pasos activada
Buena muchachada de forobeta; tengo una pequeña consultar que quizás puedan ayudarme a salvar.
Resulta que tengo una tabla con varios campos y como 400.000 datos.
De esos datos tengo muchos que se me han repetido.
quisiera eliminar todos los datos repetidos solo dejando una sola alta dentro de la tabla....

supongamos que tengo algo así:

id / nombre / descripción

y 5 altas diferente id, mismo nombre misma descripción quiero eliminar 4 de esos y dejar solo 1..... nose si me explico.... esoty medio dormido.:encouragement::encouragement::encouragement:

gracias al alma que me ayude! jeje
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
podrias intentar creando una nueva tabla para migrar los registros que no se van a duplicar , utilizando un lenguage de programacion del lado de servidor

recorres todos datos de cada fila de la tabla
SELECT * FORM table_name

luego para ingresar los nuevos datos en la nueva tabla hay que validar si que existen o no
SELECT COUNT(*) FROM table_name WHERE name = '' and register = '';

SI no existe entonces hacer INSERT de la fila de registro

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

ingresara los datos sin duplicar
 
Última edição:
Esto se solucione en pocos segundos, primero crea una tabla temporal igual a la tabla que tiene los datos duplicados agrupando los campos que supuestamente esta repetidos, yo en este ejemplo le pongo los 2 que mencionas sin mencionar el ID que ese se autoincrementa supongo.

CREATE TABLE mi_tabla_temporal AS SELECT * FROM mi_tabla GROUP BY (nombre,descripcion);

Luego de verificar que exista la tabla mi_tabla_temporal y ver que este todo correcto procedes a borrarla.

DELETE TABLE mi_tabla;

Una vez borrata renombras la temporal.

RENAME TABLE mi_tabla_temporal TO mi_tabla;

Y listo!
 
Intenta algo como:
PHP:
DELETE FROM table_name WHERE id NOT IN(
    SELECT MIN(id)
        FROM table_name
        GROUP BY TRIM(nombre)
);

Saludos.
 
Esto se solucione en pocos segundos, primero crea una tabla temporal igual a la tabla que tiene los datos duplicados agrupando los campos que supuestamente esta repetidos, yo en este ejemplo le pongo los 2 que mencionas sin mencionar el ID que ese se autoincrementa supongo.

CREATE TABLE mi_tabla_temporal AS SELECT * FROM mi_tabla GROUP BY (nombre,descripcion);

Luego de verificar que exista la tabla mi_tabla_temporal y ver que este todo correcto procedes a borrarla.

DELETE TABLE mi_tabla;

Una vez borrata renombras la temporal.

RENAME TABLE mi_tabla_temporal TO mi_tabla;

Y listo!

así como esta me tira un error nose cuando le doy al CREATE me larga

#1241 - Operand should contain 1 column(s)
 
Voltar
Topo