MySQL Borrar contenido duplicado

LzO

Tengo una tabla llamada content.

En ella hay varias columnas (id, name, descr, image, url, poster, category, domain, rating, ratings, date, active y hits)

Entonces resulta que la gente postea contenido en mi web y mediante una lista de espera, la web va sacando en live esos posts, uno cada X minutos y a veces me los saca duplicados...

Entonces habría un post duplicado como 3 o 4 veces, y en la tabla se repite en todas las columnas menos en hits, que algunos tendrán mas visitas que otros aún siendo repetidos, es lo único que se diferencia en la tabla SQL.

Entonces que sentencia podría ejecutar para eliminar los duplicados?

Me valdría con??:

Insert into tabla_temporal
select distinct *
  from tabla;

delete tabla;

insert into tabla
 Select *
  from tabla_temporal;

Esto lo busqué en google pero me da que solo funciona si todas las columnas son iguales los valores, en mi caso como ya dije, en los repetidos todas son iguales menos hits, que son los clicks al post.

Pregunto antes porque no quiero cagarla, aunque hago backup, pero no me gustaria hacer desastre xD

gracias.

eXtreM3

Cuando cargas los nuevos post en el live tienes que hacer una consulta no? Por qué no añades un campo más a la tabla para saber si lo has mostrado en el live en plan "live - sí o no" y después en la consulta excluyes de los resultados los que tengan ese campo en "sí" ?

1 respuesta
LzO

#2 Eso lo tengo en mente, pero quiero borrar cientos de entradas duplicadas, la web la tenia medio abandonada y vengo al rescate. Entonces da palo borrar todas a mano una a una desde el panel admin del CMS.

Tambien debo estudiar algo mas el sistema del CMS, es uno de pago y no me pasa siempre, la web cuelga entradas directas que postea la gente y tambien de RSS de otras webs del genero... entonces me exploque mal y esto solo me pasa en las de RSS y no siempre.

Si supieras decirme, la consulta para el borrado masivo, agradecido.

LzO

Bueno podeis chapar, lo he solucionado así:

CREATE TABLE new_table as SELECT * FROM content WHERE 1 GROUP BY url;

DROP TABLE content;

RENAME TABLE new_table TO content;

Usuarios habituales

  • LzO
  • eXtreM3