Iremos conhecer as técnicas:
1. Obter os registros distintos (SELECT, DISTINCT):
Use a cláusula SELECT DISTINCT para recuperar apenas os registros únicos de uma coluna ou conjunto de colunas.
Exemplo:
SELECT DISTINCT Column1, Column2 FROM TableName;
2. Identificar registros duplicados no plano de execução (EXECUTION PLAN):
- Analise o plano de execução para identificar operações que podem indicar a presença de registros duplicados.
3. Identificar registros duplicados por agrupamento de colunas (GROUP BY, COUNT):
Utilize a cláusula GROUP BY para agrupar os registros por colunas específicas e COUNT para contar a ocorrência de cada grupo.
Exemplo:
SELECT Column1, Column2, COUNT(*)
FROM TableName
GROUP BY Column1, Column2
HAVING COUNT(*) > 1;
4. Filtrar registros agrupados (HAVING, COUNT):
Utilize a cláusula HAVING para filtrar os resultados do agrupamento com base em condições específicas, como contar mais de uma ocorrência.
Exemplo:
SELECT Column1, COUNT(*)
FROM TableName
GROUP BY Column1
HAVING COUNT(*) > 1;
5. Identificar individualmente os registros duplicados por função de janela (ROW_NUMBER, OVER, PARTITION BY):
Utilize funções de janela, como ROW_NUMBER() OVER (PARTITION BY ...), para atribuir números de linha a registros duplicados.
Exemplo:
SELECT Column1, Column2, ROW_NUMBER() OVER (PARTITION BY Column1, Column2 ORDER BY SomeColumn) AS RowNum
FROM TableName;
6. Excluir os registros duplicados em tabela de expressão comum (CTE, WITH, SUBQUERY, DELETE):
Use uma CTE (Common Table Expression) para identificar registros duplicados e, em seguida, utilize uma instrução DELETE para removê-los.
Exemplo:
WITH Duplicates AS (
SELECT Column1, Column2, ROW_NUMBER() OVER (PARTITION BY Column1, Column2 ORDER BY SomeColumn) AS RowNum
FROM TableName
)
DELETE FROM Duplicates WHERE RowNum > 1;
Esses são passos comuns para lidar com registros duplicados em consultas SQL no Microsoft SQL Server. Escolha o método mais apropriado com base nos requisitos específicos do seu cenário.