Selecionar e excluir registros duplicados por data da última atualização?
Em um sistema foi encontrado um problema que houve como consequência inserções vamos dizer de mais de 16 mil repetições para cerca de uns 100 registros com mesmo nome e valor em determinada tabela.
Parece surreal, mas mais de 16 mil registros duplicados para cada valor e o erro ocorreu com cerca de uns 100 valores. O erro foi percebido após análise devido ao alto consumo de recursos do servidor, e foi observado que o erro existe desde 2014 devido às datas de inserções e de atualizações dos registros.
O que vai ser feito é excluir todos aqueles que são repetidos com data inferior a 01/11/2017 a fim de amenizar o consumo de recursos e será feita a correção do sistema.
Gostaria de saber como retornar e excluir registros repetidos, por exemplo se existir 100 registros com nomes iguais, excluir aqueles com data de última atualização inferior a 01/11/2017
Parece surreal, mas mais de 16 mil registros duplicados para cada valor e o erro ocorreu com cerca de uns 100 valores. O erro foi percebido após análise devido ao alto consumo de recursos do servidor, e foi observado que o erro existe desde 2014 devido às datas de inserções e de atualizações dos registros.
O que vai ser feito é excluir todos aqueles que são repetidos com data inferior a 01/11/2017 a fim de amenizar o consumo de recursos e será feita a correção do sistema.
Gostaria de saber como retornar e excluir registros repetidos, por exemplo se existir 100 registros com nomes iguais, excluir aqueles com data de última atualização inferior a 01/11/2017
Anderson
Curtidas 0
Respostas
Henrique Dias
07/11/2017
so consigo pensar em uma estrutura de repetiçao pra resolver isso, e ir comparando um por um, se achar um igual joga pra outra condição que compare as datas e o q passar faz um delete
mas para 16 mil registros vai demorar algumas horas, nao deve ser o jeito mais eficiente, porem pelo fato de eu ser iniciante e o que me vem na mente
mas para 16 mil registros vai demorar algumas horas, nao deve ser o jeito mais eficiente, porem pelo fato de eu ser iniciante e o que me vem na mente
GOSTEI 0
Anderson
07/11/2017
Pode ser comandos e pois tenho acesso ao banco de dados.
select
delete
GOSTEI 0
Anderson
07/11/2017
Melhor explicando: Comandos
SQL
GOSTEI 0
Anderson
07/11/2017
Encontrei a resposta
Vamos supor, todos os registros onde existam registros com mais de 100 repetições:
Para visualizar as datas de ultima atualização de determinado registro especifico:
Deletar com datas inferiores a determinada data:
Vamos supor, todos os registros onde existam registros com mais de 100 repetições:
SELECT nome, valor, dt_add, dt_update, COUNT(*) FROM configuracoes GROUP BY nome, valor HAVING COUNT(*) > 100 ORDER BY dt_update DESC
Para visualizar as datas de ultima atualização de determinado registro especifico:
SELECT nome, valor, dt_add, dt_update FROM configuracoes WHERE nome = "habilitar-alertas" ORDER BY dt_update DESC
Deletar com datas inferiores a determinada data:
DELETE FROM configuracoes WHERE nome = "habilitar-alertas" and DATE(dt_update) < '2017-11-01';
GOSTEI 0