Eliminar filas duplicadas pero conservar una sin tener una columna única.
Pregunta
Tengo una tabla con entradas duplicadas que quiero eliminar, manteniendo sólo una de las entradas duplicadas. Como puedes ver, son exactamente iguales en cada columna, no hay manera de diferenciarlas:
He utilizado esta consulta para averiguar cuántas entradas duplicadas tengo:
sql
select url_rewrite_id, category_id, product_id, count(*) cnt
from catalog_url_rewrite_product_category
group by url_rewrite_id, category_id, product_id
having cnt > 1
order by cnt desc
Podría usar una variante de esto para eliminar todas las entradas duplicadas:
sql
delete
from catalog_url_rewrite_product_category
where url_rewrite_id in (
select url_rewrite_id
from catalog_url_rewrite_product_category
group by url_rewrite_id, category_id, product_id
having count(*) > 1
)
El problema que tengo con esto es que eliminaría todas las entradas que son duplicadas y no mantendría la última.
Preguntas anteriores (aquí y aquí) asumen una columna de id
única de alguna manera que no es el caso con la estructura de datos que tengo.
davy.ai
¿Existe alguna forma de mantener la última entrada de los duplicados y eliminar el resto?
Sí, puedes utilizar la siguiente consulta para mantener la última entrada de los duplicados y eliminar el resto: