SQL

Cómo eliminar valores duplicados de una tabla en SQL Server

Estrada Web Group
Estrada Web Group
Cómo eliminar valores duplicados de una tabla en SQL Server

Resumen: en este tutorial, aprenderás cómo eliminar filas duplicadas de una tabla en SQL Server.

Introducción eliminar filas duplicadas

Para eliminar las filas duplicadas en una tabla en SQL Server, sigue estos pasos:

  • Encuentra filas duplicadas usando la cláusula GROUP BY o la función ROW_NUMBER().
  • Use la declaración DELETE para eliminar las filas duplicadas.

Configuración de una tabla de ejemplo

Primero, crea una nueva tabla llamada sales.contacts de la siguiente manera:

DROP TABLE IF EXISTS sales.contacts;

CREATE TABLE sales.contacts(
    contact_id INT IDENTITY(1,1) PRIMARY KEY,
    first_name NVARCHAR(100) NOT NULL,
    last_name NVARCHAR(100) NOT NULL,
    email NVARCHAR(255) NOT NULL,
);

En segundo lugar, insertar algunas filas en la tabla sales.contacts:

INSERT INTO sales.contacts
    (first_name,last_name,email)
VALUES
    ('Syed','Abbas','syed.abbas@estradawebgroup.com'),
    ('Catherine','Abel','catherine.abel@estradawebgroup.com'),
    ('Kim','Abercrombie','kim.abercrombie@estradawebgroup.com'),
    ('Kim','Abercrombie','kim.abercrombie@estradawebgroup.com'),
    ('Kim','Abercrombie','kim.abercrombie@estradawebgroup.com'),
    ('Hazem','Abolrous','hazem.abolrous@estradawebgroup.com'),
    ('Hazem','Abolrous','hazem.abolrous@estradawebgroup.com'),
    ('Humberto','Acevedo','humberto.acevedo@estradawebgroup.com'),
    ('Humberto','Acevedo','humberto.acevedo@estradawebgroup.com'),
    ('Pilar','Ackerman','pilar.ackerman@estradawebgroup.com');

Tercero, consultar los datos de la tabla sales.contacts:

SELECT
   contact_id,
   first_name,
   last_name,
   email
FROM
   sales.contacts;

Resultado:

contact_id first_name last_name email
1 Syed Abbas syed.abbas@estradawebgroup.com
2 Catherine Abel catherine.abel@estradawebgroup.com
3 Kim Abercrombie kim.abercrombie@estradawebgroup.com
4 Kim Abercrombie kim.abercrombie@estradawebgroup.com
5 Kim Abercrombie kim.abercrombie@estradawebgroup.com
6 Hazem Abolrous hazem.abolrous@estradawebgroup.com
7 Hazem Abolrous hazem.abolrous@estradawebgroup.com
8 Humberto Acevedo humberto.acevedo@estradawebgroup.com
9 Humberto Acevedo humberto.acevedo@estradawebgroup.com
10 Pilar Ackerman pilar.ackerman@estradawebgroup.com

Hay muchas filas duplicadas (3,4,5), (6,7) y (8,9) para los contactos que tienen el mismo nombre, apellido y correo electrónico.

Eliminar filas duplicadas en la tabla de ejemplo

La siguiente instrucción utiliza una expresión de tabla común (CTE) para eliminar filas duplicadas:

WITH cte AS (
    SELECT
        contact_id,
        first_name,
        last_name,
        email,
        ROW_NUMBER() OVER (
            PARTITION BY
                first_name,
                last_name,
                email
            ORDER BY
                first_name,
                last_name,
                email
        ) row_num
     FROM
        sales.contacts
)
DELETE FROM cte
WHERE row_num > 1;

Resultado

(4 rows affected)

En esta declaración:

  • Primero, el CTE usa la función ROW_NUMBER() para encontrar las filas duplicadas especificadas por valores en las columnas first_name, last_name y email.
  • Luego, la declaración DELETE elimina todas las filas duplicadas, pero mantiene solo una aparición de cada grupo duplicado.

Si vuelves a consultar los datos de la tabla sales.contacts, verá que se eliminan todas las filas duplicadas.

SELECT contact_id,
       first_name,
       last_name,
       email
FROM sales.contacts
ORDER BY first_name,
         last_name,
         email;

Resultado:

contact_id first_name last_name email
1 Syed Abbas syed.abbas@estradawebgroup.com
2 Catherine Abel catherine.abel@estradawebgroup.com
3 Kim Abercrombie kim.abercrombie@estradawebgroup.com
6 Hazem Abolrous hazem.abolrous@estradawebgroup.com
8 Humberto Acevedo humberto.acevedo@estradawebgroup.com
10 Pilar Ackerman pilar.ackerman@estradawebgroup.com

En este tutorial, has aprendido a eliminar filas duplicadas de una tabla en SQL Server.

 

Compartir artículo:

Más artículos geniales

¿Cómo convertir una cadena de texto a fecha y hora en SQL?

¿Cómo convertir una cadena de texto a fecha y hora en SQL?

En este artículo te mostraré cómo convertir un campo de texto a fecha y hora, el campo se encuentra en formato de cadena (varchar, nvarchar, etc.) y lo convertiremos a en un tipo DateTime de SQL.

Ver artículo completo
Aprende a utilizar las condiciones con la cláusula WHERE de SQL

Aprende a utilizar las condiciones con la cláusula WHERE de SQL

La cláusula WHERE de SQL se utiliza para especificar una condición al recuperar un conjunto de datos de una tabla o de un conjunto de tablas.

Ver artículo completo
Cómo eliminar una columna en SQL Server con ALTER TABLE DROP COLUMN

Cómo eliminar una columna en SQL Server con ALTER TABLE DROP COLUMN

Resumen: en este tutorial, aprenderás cómo usar la declaración ALTER TABLE DROP COLUMN de SQL Server para eliminar una o más columnas de una tabla existente.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla