Fórum Update dados/Excluindo duplicidade #522352
09/06/2015
0
select cnpj, count(ecnpj) from tabela group by cnpj having count(cnpj)>1
busquei todos com duplicidade no cnpj, agora preciso fazer com que a PK menor receba todos os vínculos das PKs maiores do mesmo cpf, pois há registros que não podem ser perdidos, para assim posteriormente excluir os vínculos dos cfps repetidos e seus cadastros
delete from tabela where cnpj in (select cnpj from tabela group by cnpj having Count(cnpj)>1) and not Pk in (select Min(Pk) from tabela group by cnpj having Count(cnpj)>1)
como posso fazer está passagem de registros e posteriormente a exclusão de todos os vínculos?
Fernando Bortolo
Curtir tópico
+ 0Posts
09/06/2015
Marcos P
Depois, selecione, para cada registro da temporária os registros da tabela principal cuja PK atenda seu critério de exclusão.
Por exemplo... where pk <> max(pk).
Com esse select funcionando, ou seja, você vai estar relacionando todos os registros duplicados QUE NÃO lhe interessam, adapte o select para um delete.
Como você não citou o banco, não posso lhe ajudar muito mais do que isso.
Gostei + 0
09/06/2015
Fernando Bortolo
Preciso pegar todas as tabelas relacionadas nas PKs max e passar para a min para ai sim fazer a exclusão dos vínculos das max e por fim a exclusão dela mesma
Gostei + 0
09/06/2015
Marcos P
Se você não conseguir resolver com um único select, pode criar uma coluna vazia na temporária para receber ( via update ) a PH do registro com o MAX() de cada CNPJ.
Tendo isso, fica fácil excluir os registros cujas PKs diferem desse valor...
É um passo a mais que pode lhe ajudar !
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)