solo repetidos registros mostrar menos evitar eliminar duplicados dejando buscar agrupar sql-server rdbms

repetidos - ¿Cómo detectar filas duplicadas en una tabla de SQL Server?



sql eliminar registros duplicados menos uno (5)

¿Cuál es la forma más eficiente de detectar duplicados en una tabla de 10 columnas / 50,000 filas? Estoy usando MSSQL 8.0


Además de las sugerencias provistas, me esforzaría por evitar duplicados en el futuro, en lugar de tratar de localizarlos más adelante.

Esto se hace usando índices únicos en columnas (o grupos de columnas) que se supone que son únicos. Recuerde que los datos en la base de datos se pueden modificar desde otras ubicaciones que no sean a través de la aplicación específica en la que está trabajando, por lo que es mejor definir qué está y qué no está permitido en una tabla en el nivel de la base de datos.


Para detectar, simplemente agrupe como dijo Guge.

select fieldA, fieldB, count(*) from table group by fieldA, fieldB having count(*) > 1

Si quieres eliminar a los incautos ... pseudo ....

select distinct into a temp table truncate original table select temp table back into original table

Con truncar, puede tener problemas si tiene restricciones de FK, así que sea inteligente para eliminar las restricciones y asegurarse de no mantener registros huérfanos.


Para mostrar un ejemplo de lo que otros han estado describiendo:

SELECT Col1, -- All of the columns you want to dedupe on Col2, -- which is not neccesarily all of the columns Col3, -- in the table Col4, Col5, Col6, Col7, Col8, Col9, Col10 FROM MyTable GROUP BY Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10 HAVING COUNT(*) > 1


Prueba esto

Select * From Table Group By [List all fields in the Table here] Having Count(*) > 1


Puede usar "agrupar por" en todas las columnas y luego contar (*)> 1