Evitar registros duplicados no campo descrição em MySQL e PHP

  • Autor Autor blogers
  • 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
Por ejemplo tengo en una tabla 10 mil duplicados es lo que yo queria por ejemplo ejecutar el cron una sola vez al dia y que con esa ejecucion elimine todo lo que sea duplicado envez de ejecutarlo una vez por regitro
En realidad el script busca todos los duplicados y los enlista, y luego va borrandolos de a 1..
Lo puedes poner dentro de un cron sin problemas y él se encarga de periodicamente ver si hay duplicados y los elimina en caso que encuentre.
 
ya entiendo, entonces haz lo siguiente..

la parte de $sql2 modificalo y reemplaza por este otro

PHP:
$sql2 = mysql_query("select min(codigo) from staffpruebasbolsa where trim(description) = '". $row['descripcion'] ."'");

luego el query del delete reemplaza por este otro

PHP:
mysql_query("delete from staffpruebasbolsa where codigo != $id_registro and trim(description) = '". $row['descripcion'] ."'");

Con esta modificacion lo que le decis es que busque cual es el minimo registro (codigo) y luego que borre el resto que no sea ese codigo..

De esta forma, si los id duplicados son el 1,3,5 el primer select buscara el codigo "1" y hara que borre el "3" y el "5"
 
Listo ya funciono muchisismas gracias te voy a mandar un MP
ya entiendo, entonces haz lo siguiente..

la parte de $sql2 modificalo y reemplaza por este otro

PHP:
$sql2 = mysql_query("select min(codigo) from staffpruebasbolsa where trim(description) = '". $row['descripcion'] ."'");

luego el query del delete reemplaza por este otro

PHP:
mysql_query("delete from staffpruebasbolsa where codigo != $id_registro and trim(description) = '". $row['descripcion'] ."'");

Con esta modificacion lo que le decis es que busque cual es el minimo registro (codigo) y luego que borre el resto que no sea ese codigo..

De esta forma, si los id duplicados son el 1,3,5 el primer select buscara el codigo "1" y hara que borre el "3" y el "5"
 
de nada para eso estamos 😉
 
Si me funciono men pero se quedo a medias ya no quiso borrar mas el que me funciono fue este pero ahora como armo el php

PHP:
DELETE FROM mitabla
 WHERE micodigo NOT IN (SELECT * 
                    FROM (SELECT MIN(n.micodigo)
                            FROM mitabla n
                        GROUP BY n.micampo) x)
de nada para eso estamos 😉
 
es mejor ver por que dices que borro a medias, ya que con el ultimo que tienes, busca los duplicados y elimina solo los nuevos y deja el viejo, tienes algun ejemplo que no se borra con el metodo que usaste al principio?
 
Voltar
Topo