Eliminación de filas duplicadas (basadas en valores de varias columnas) de la tabla SQL

En SQL, algunas filas contienen entradas duplicadas en varias columnas (>1). Para eliminar tales filas, necesitamos usar la palabra clave DELETE junto con la autounión de la tabla consigo misma. Lo mismo se ilustra a continuación. Para este artículo, utilizaremos Microsoft SQL Server como nuestra base de datos.

Paso 1: crear una base de datos. Para esto, use el siguiente comando para crear una base de datos llamada GeeksForGeeks.

Consulta:

CREATE DATABASE GeeksForGeeks

Producción:

Paso 2: use la base de datos GeeksForGeeks. Para esto, use el siguiente comando.

Consulta:

USE GeeksForGeeks

Producción:

Paso 3: Cree una tabla RESULTADO dentro de la base de datos GeeksForGeeks. Esta tabla tiene 5 columnas, a saber, STUDENT_ID, PHYSICS_MARKS, CHEMISTRY_MARKS, MATHS_MARKS y TOTAL_MARKS que contienen la identificación del estudiante, sus calificaciones en física, química y matemáticas y, finalmente, sus calificaciones totales.

Consulta:

CREATE TABLE RESULT(
STUDENT_ID  INT,
PHYSICS_MARKS INT,
CHEMISTRY_MARKS INT,
MATHS_MARKS INT,
TOTAL_MARKS INT);

Producción:

Paso 4: Describa la estructura de la tabla RESULTADO.

Consulta:

EXEC SP_COLUMNS RESULT;

Producción:

Paso 5: Inserte 10 filas en la tabla RESULTADO.

Consulta:

INSERT INTO RESULT VALUES(1,90,88,75,253);
INSERT INTO RESULT VALUES(2,99,88,75,262);
INSERT INTO RESULT VALUES(3,96,88,75,256);
INSERT INTO RESULT VALUES(4,97,87,76,260);
INSERT INTO RESULT VALUES(5,91,86,77,254);
INSERT INTO RESULT VALUES(6,92,85,78,255);
INSERT INTO RESULT VALUES(7,93,84,79,256);
INSERT INTO RESULT VALUES(8,80,83,87,250);
INSERT INTO RESULT VALUES(9,80,82,88,250);
INSERT INTO RESULT VALUES(10,80,81,89,250);

Producción:

Paso 6: Muestre todas las filas de la tabla de RESULTADOS.

Consulta:

SELECT * FROM RESULT;

Producción:

Paso 7: elimine las filas de la tabla RESULTADO que tienen entradas duplicadas en las columnas CHEMISTRY_MARKS y MATHS_MARKS . Para lograr esto, usamos la función DELETE uniéndonos automáticamente (use la función JOIN en 2 alias de la tabla, es decir, R1 y R2 ) la tabla consigo misma y comparando las entradas de las columnas CHEMISTRY_MARKS y MATHS_MARKS para diferentes entradas de la columna STUDENT_ID porque ID es único para cada estudiante.

Sintaxis:

DELETE T1 FROM TABLE_NAME T1
JOIN TABLE_NAME T2
ON T1.COLUMN_NAME2 = T2.COLUMN_NAME2 AND
T1.COLUMN_NAME3 = T2.COLUMN_NAME3 AND .......
AND T2.COLUMN_NAME1 < T1.COLUMN_NAME1;

Consulta:

DELETE R1 FROM RESULT R1
JOIN RESULT R2
ON R1.CHEMISTRY_MARKS = R2.CHEMISTRY_MARKS
AND R1.MATHS_MARKS = R2.MATHS_MARKS
AND R2.STUDENT_ID < R1.STUDENT_ID;

Producción:

Paso 8: Muestre todas las filas de la tabla de RESULTADOS actualizada.

Consulta:

SELECT * FROM RESULT;

Nota: ninguna fila tiene entradas duplicadas en las columnas CHEMISTRY_MARKS y MATHS_MARKS .

Producción:

Paso 9: elimine las filas de la tabla RESULTADO que tienen entradas duplicadas en las columnas TOTAL_MARKS y PHYSICS_MARKS .

Consulta:

DELETE R1 FROM RESULT R1
JOIN RESULT R2
ON R1.TOTAL_MARKS = R2.TOTAL_MARKS AND R1.PHYSICS_MARKS = R2.PHYSICS_MARKS
AND R2.STUDENT_ID < R1.STUDENT_ID;

Producción:

Paso 10: Muestre todas las filas de la tabla de RESULTADOS actualizada.

Consulta:

SELECT * FROM RESULT;

Nota : ninguna fila tiene entradas duplicadas en las columnas TOTAL_MARKS y PHYSICS_MARKS .

Producción:

Publicación traducida automáticamente

Artículo escrito por abhisri459 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *