Seleccionar y borrar registros duplicados en una tabla SQL
Vamos a mostrar un camino corto pero efectivo para seleccionar y borrar registros duplicados en una tabla de MSSQL o MySQL.
En algún momento se requiere encontrar registros duplicados en nuestra tabla. He aquí una solución simple de consulta SQL. Miremos un poco más.
Bueno, yo voy a crear una tabla sencilla en la base de datos AdventureWorks.
| use adventureworks GO Create Table SeleccionDuplicada ( ID int identity(1,1) not null, Fname varchar(10) not null, Lname varchar(10) not null, City varchar(10) not null ) |
Ahora se va ingresar algunos registros en la tabla creada anteriormente.
| INSERT INTO SeleccionDuplicada VALUES(‘Charles’,’Virginia’,’Zafir’) INSERT INTO SeleccionDuplicada VALUES(‘Avril’,’Sergey’,’Edison’) INSERT INTO SeleccionDuplicada VALUES(‘Robert’,’Kalaria’,’MSSQL’) INSERT INTO SeleccionDuplicada VALUES(‘Charles’,’Chaplin’,’Windows’) INSERT INTO SeleccionDuplicada VALUES(‘Robert’,’Kalar’,’Zafir’) |
Ahora ejecutamos la siguiente sentencia SQL.
| SELECT * FROM SeleccionDuplicada WHERE ID NOT IN ( SELECT MAX(ID) FROM SeleccionDuplicada GROUP BY Fname,Lname ) |
Es de señalar que hay muchos caminos para borrar los registros duplicados de la base de datos, y obviamente podemos borrar estos registros solamente con cambiar el primer “SELECT*” a “DELETE” como en el siguiente código.
| DELETE FROM SeleccionDuplicada WHERE ID NOT IN ( SELECT MAX(ID) FROM SeleccionDuplicada GROUP BY Fname,Lname ) |
Comment (1)
hola muy buena explicacion, pero una pregunta si yo quiero eliminar registros duplicados que contengan la misma informacion en 6 campos seleccionados se puede hacer?
ejemplo: NOMBRE PAQ HISTORIA CAJA
JULIAN RAMI 18 15 36
JULIAN RAMI 17 3 25
JULIAN RAMI 18 15 36
NECESITO QUE ELIMINE UNO DE LOS QUE SE REPITE EN ESTOS 4 CAMPOS. ES POSIBLE????