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