2
respostas

[Dúvida] Remoção de registros duplicados com condição

Olá! Tenho uma dúvida sobre remoção de registros duplicados com condição... Como eu poderia remover registros duplicados de uma tabela mantendo sempre o registro mais recente? Por exemplo, eu tenho uma tabela que armazena pedidos de compra. Essa tabela acumula para um mesmo ID_PEDIDO o status do pedido conforme ele evolui na esteira. Me interessaria manter sempre o status mais recente do pedido, ou seja, o status da última data.

ID = 1501 Status: Criação Data: 01/01/2022

ID = 1501 Status: Aprovação Data: 02/01/2022

ID = 1501 Status: Em separação Data: 02/01/2022

ID = 1501 Status: Em transporte Data: 03/01/2022

ID: 1501 Status: Entrega realizada Data: 15/01/2022

2 respostas

Oi Jéferson,

No seu código, basta fazer um update nessa tabela nesse ID em específico toda vez que tiver uma mudança de status.

UPDATE nome_tabela
SET Status = 'Entrega realizada',
    Data = '15/01/2022'
WHERE ID = 1501;

Isso supondo que sua tabela foi construída com ID sendo a chave primária. Se não for isso e existir mais de uma linha com o mesmo ID, esse pedaço de código vai atualizar todas as linhas que tem ID 1501 com o mesmo Status e vc precisaria de mais algum campo para filtrar a linha certa.

Obs: Se vc tem essa tabela sem ID como chave primária e não precisa manter todas as linhas anteriores (estou supondo isso pelo formato da sua questão), eu recomendo que vc crie uma tabela nova com essas propriedades, setando ID como PK e identidade (pra ter atualização automática quando fizer insert).

Ola Gil. Obrigado pela ajuda. mas me parece que essa sugestão nao resolveria, porque se eu fixar o status e a data, a consulta não vai retornar a mais recente sempre e status diferentes desses, certo?