Saltar al contenido
­čÜÇ Lacodigoteca.com

Borrar registros duplicados SQL

Borrar registros duplicados SQL

Cuando hemos añadido datos duplicados y no tenemos datos de más campos que lo puedan diferenciar, resulta un poco complicado borrar registros duplicados.

Te voy a enseñar qué pasos sigo yo para poder borrar registros duplicados:

// CREAMOS LA TABLA QUE NOS SERVIRÁ DE BACKUP 
(Los campos tienen que ser identicos a la original) 
CREATE TABLE clientes_BAK ( idcliente INT(5), ncliente INT(5), nombre VARCHAR(20), apellidos VARCHAR(50) NULL, telefono VARCHAR(9) NULL, fecha_alta DATE NULL, idtienda INT(5) NULL ); 

// Volcamos todos los datos de la tabla original 
INSERT INTO clientes_BAK SELECT idcliente,ncliente,nombre,apellidos,telefono,fecha_alta,idtienda FROM clientes; // Comprobaremos que tenemos el mismo número de registros SELECT COUNT(*) FROM clientes_BAK; SELECT COUNT(*) FROM clientes;

Paso 1: Antes de manipular datos, realizamos un Backup de la tabla

// CREAMOS LA TABLA QUE NOS SERVIRÁ DE BACKUP (Los campos tienen que ser identicos a la original)
CREATE TABLE clientes_BAK (
    idcliente INT(5),
    ncliente INT(5),
    nombre VARCHAR(20),
    apellidos VARCHAR(50) NULL,
    telefono VARCHAR(9) NULL,
    fecha_alta DATE NULL,
    idtienda INT(5) NULL
);

// Volcamos todos los datos de la tabla original 
INSERT INTO clientes_BAK
SELECT idcliente,ncliente,nombre,apellidos,telefono,fecha_alta,idtienda
FROM clientes;

// Comprobaremos que tenemos el mismo número de registros
SELECT COUNT(*) FROM clientes_BAK;
SELECT COUNT(*) FROM clientes;

Paso 2: Detectamos qué registros están duplicados. Podemos comparar con el número de registros del backup y el número de registros que han salido duplicados. Nos servirá de comprobación que lo hemos hecho bien.

SELECT DISTINCT * 
FROM clientes
GROUP BY idcliente,ncliente,nombre,apellidos,telefono,fecha_alta,idtienda
HAVING COUNT(*) > 1

Paso 3 (¡Asegurate que has hecho el primer paso!): Procedemos a borrar datos de la tabla original y vamos a insertar datos sin duplicados

// Borramos los datos de la tabla original
/* OJO: Para otro tipo de consultas no te olvides del WHERE xD */
delete from clientes; 

// Añadimos datos sin duplicados
insert into clientes
select distinct idcliente,ncliente,nombre,apellidos,telefono,fecha_alta,idtienda
FROM clientes_BAK;

Paso 4: Asegura que tus datos están bien, deja ese Backup unos días y procede a eliminarlo.

A %d blogueros les gusta esto: