1
resposta

[Dúvida] Valores duplicados

Por algum motivo a minha tabela "categorias" está com os registros duplicados. Poderiam me explicar o que eu fiz de errado e como corrigir?

SELECT * FROM categoria;

Resultado

1 resposta

Oii, Aline. Tudo bem?

Isso acontece por inserções múltiplas dos mesmos valores de categoria com diferentes IDs. Isso pode acontecer por diversos motivos, como a execução repetida de um script de inserção ou a falta de validações para evitar duplicatas.

Para lidar com isso, você pode fazer uma consulta que identifique e remova as duplicatas, mantendo apenas um registro de cada categoria.

Vou deixar este exemplo:

DELETE FROM categoria
WHERE id IN (
    SELECT id
    FROM (
        SELECT id,
        ROW_NUMBER() OVER(PARTITION BY nome ORDER BY id) as rn
        FROM categoria
    ) t
    WHERE t.rn > 1
);

Essa consulta utiliza uma subconsulta com a função de janela ROW_NUMBER() para atribuir um número sequencial a cada registro dentro de uma partição de nomes de categoria iguais, ordenados pelo ID. Então, ela filtra para manter apenas os registros com um número sequencial maior que 1 (ou seja, as duplicatas), e os remove.

Se outra dúvida surgir, estamos aqui!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.