Excluir usando delete deixando um reg de cada.

Firebird

12/01/2004

Galera, tenho um banco de dados com algumas duplicidades.

Preciso excluir as duplicidades e deixar apenas uma registro de cada. Tem como ?
Exemplo

Codigo Nome
001 Maria
001 Maria
001 Maria
002 Jose
002 Jose
002 Jose

Preciso deletar todos os duplicados deixando a estrutura assim:

Codigo Nome
001 Maria
002 Jose

ou seja, um de cada.


Adriano Santos

Adriano Santos

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

12/01/2004

Colega,

Minha sugestão é efetuar um select com Group By e exportar para uma nova tabela. Não tenho muito conhecimento de IB/FB, mas acho que o uso de SP com um cursor para fazer fetch e verificar se o registro atual é igual ao anterior e ir removendo, ou em último caso, pode ser feito com uma linguagem de programação.


GOSTEI 0
Afarias

Afarias

12/01/2004

Uma solução seria::

1- crie um novo campo (temporário) na tabela::

alter table nome_sua_tabela add chave integer;

2 - crie um generator (temporário)::

create generator gen_chave;

3 - preencha o campo ´chave´ com os valores do generator::

update nome_sua_tabela set chave = gen_id(gen_chave, 1);

4 - use o campo ´chave´ no WHERE dos seus deletes, ex::

delete from nome_sua_tabela a
where a.chave <> (select min(chave) from nome_sua_tabela
where codigo = a.codigo);


T+


GOSTEI 0
Adriano Santos

Adriano Santos

12/01/2004

valeu deu certo.


GOSTEI 0
POSTAR