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