Evitar registros duplicados campo descripción en MySQL y PHP

  • Autor Autor blogers
  • Fecha de inicio Fecha de inicio
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?
 
Atrás
Arriba