Una ayuda para evitar registros duplicados en cierto campo Mysql

blogers

Pi
SEO
Verificación en dos pasos desactivada
Desde
22 Ago 2010
Mensajes
6.616
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
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.
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
38
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"
 

blogers

Pi
SEO
Verificación en dos pasos desactivada
Desde
22 Ago 2010
Mensajes
6.616
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
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"
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
38
de nada para eso estamos ;)
 

blogers

Pi
SEO
Verificación en dos pasos desactivada
Desde
22 Ago 2010
Mensajes
6.616
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
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 ;)
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
38
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?
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba