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;
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;
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!