Artículo: eliminar registros duplicados

Artículo: eliminar registros duplicados

24 enero, 2020 ARTÍCULOS 0

En ocasiones nos podemos encontrar con tablas en las cuales queremos crear una clave primaria o un índice único pero que tienen registros duplicados. Como para poder crear la clave primaria o el índice único es necesario que el campo que utilizamos como referencia sea único para poder identificar unívocamente el registro será necesario eliminar los registros duplicados. En el caso de que la tabla no esté fragmentada podemos utilizar el siguiente procedimiento:
SELECT rowid
FROM tabla_con_duplicados
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM tabla_con_duplicados GROUP BY columna_identificativa
) INTO TEMP tabla_temporal;

DELETE FROM tabla_con_duplicados
WHERE rowid = (
SELECT rowid
FROM tabla_temporal
WHERE tabla_con_duplicados.rowid = tabla_temporal.rowid
);

tabla_con_duplicados: Nombre de la tabla con registros duplicados que queremos eliminar

columna_identificativa: Nombre de la columna que será la clave única. Se utiliza como referencia para identificar registros duplicados

tabla_temporal: nombre de una tabla temporal para almacenar los rowid de los duplicados

Este procedimiento se basa en los rowid por lo que no funciona si la tabla está fragmentada ya que cada fragmento tendría sus propios rowid pudiendo estar duplicados en diferentes fragmentos.