Encuentra duplicados en MS SQL Server

Podríamos usar los siguientes métodos para encontrar valores duplicados en una tabla.

  • Cláusula GROUP BY.
  • Función ROW_NUMBER().

1. Usando la cláusula GROUP BY para encontrar los valores duplicados:

Sintaxis:

SELECT col1, col2, ...COUNT(*)
FROM table_name
GROUP BY col1, col2, ...
HAVING COUNT(*) > 1;

Ejemplo:
creemos una tabla llamada Geek que contenga tres columnas ID, A y B.

CREATE TABLE Geek (
ID INT IDENTITY(1, 1),
A INT,
B INT,
PRIMARY KEY(id));

Agreguemos algunos valores a la tabla Geek –

INSERT INTO Geek (A, B)
VALUES (1, 1),(1, 2), (1, 3), (2, 1),
(1, 2), (1, 3), (2, 1), (2, 2);

Sabemos que la tabla Geek contiene las siguientes filas duplicadas:

(1, 2) (2, 1) (1, 3) 

Consulta de MS SQL Server para encontrar las filas duplicadas usando la cláusula GROUP BY en la tabla Geek:

SELECT A, B, COUNT(*) AS num
FROM Geek
GROUP BY A, B
HAVING COUNT(*) > 1;

Producción –

Mesa – Friki

A B número
2 1 2
1 2 2
1 3 2

Para encontrar los detalles completos de la fila para cada fila duplicada, ÚNASE al resultado de la consulta anterior con la tabla Geek usando CTE:

WITH CTE AS ( 
SELECT A, B, COUNT(*) AS num
FROM Geek
GROUP BY A, B
HAVING COUNT(*) > 1
)
SELECT Geek.ID, Geek.A, Geek.B
FROM Geek
INNER JOIN CTE ON
CTE.A = Geek.A AND CTE.B = Geek.B
ORDER BY Geek.A, Geek.B;

Producción –

Mesa – Friki

IDENTIFICACIÓN A B
2 1 2
5 1 2
6 1 3
3 1 3
4 2 1
7 2 1

2. Usando la función ROW_NUMBER() para encontrar valores duplicados:

Sintaxis:

WITH cte AS (
SELECT col,ROW_NUMBER() OVER (
PARTITION BY col
ORDER BY col) AS row_num
FROM table_name
)  
SELECT * 
FROM cte  
WHERE row_num > 1;

Consulta de MS SQL Server para encontrar las filas duplicadas usando la función ROW_NUMBER() en la tabla Geek:

WITH CTE AS (
SELECT A, B,
ROW_NUMBER() OVER (
PARTITION BY A, B
ORDER BY A, B
) AS rownum
FROM Geek
)
SELECT *
FROM CTE
WHERE rownum > 1;

Producción –

Mesa – Friki

A B número de fila
1 2 2
1 3 2
2 1 2

Publicación traducida automáticamente

Artículo escrito por khushboogoyal499 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 *