
Se você estiver usando o banco de dados Oracle, um problema comum é duplicar as linhas em tabelas. Geralmente isso acontece quando únicas condicionalismos são removidos durante o carregamento. Qualquer que seja o motivo, você pode remover registros duplicados. Registros duplicados têm valores idênticos para todas as colunas (ou colunas que fazem parte da chave única).
Há mais do que uma maneira de apagar registros duplicados. Vamos supor Table_A tem os seguintes dados:
Col1 Col2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201
Olhemos para o primeiro método.
- Backup sua tabela original. Este é o passo mais importante!
- Verifique se o seu backup é boa e você pode restaurar tabela original, se necessário.
- Aqui está o código para apagar registros duplicados:
Excluir de um Table_A
ONDE ROWID! = (SELECT MAX (ROWID)
DESDE Table_A b
ONDE b.col1 = a.col1
E b.col2 = a.col2);Oracle tem uma pseudo coluna chamada "ROWID", que é única para cada linha em uma tabela. Então nós podemos usar isso para apagar registros duplicados. O código acima irá encontrar apenas um ROWID para não-registros duplicados. Para os registros duplicados, vai eliminar um registo com menor ROWID. Se existirem mais de duas colunas que compõem uma única tecla para gravar, então você deve incluir todas as colunas na condição WHERE. Há dois registros duplicados no exemplo, não importa qual gravar uma vez que se elimine todas as colunas têm os mesmos valores.
- Verificar os resultados e comprometer o seu trabalho.
Agora vamos olhar para um segundo método.
- Backup sua tabela original. Esse ainda é o passo mais importante!
- Verifique se o seu backup é boa e você pode restaurar tabela original, se necessário.
- Crie uma tabela temporária com os registros exclusivos utilizando cláusula DISTINCT.
- Exclua todos os registros de tabela original.
- Coloque todos os registros de tabela temporária na tabela original.
- Verificar os resultados e comprometer o seu trabalho.
Dependendo da sua situação, você pode escolher um dos dois métodos para obter resultados mais rápidos. Registros duplicados podem ser prevenidas através Unique Indexes. Únicas garantias que Indexes colunas dentro do índice não têm valores duplicados.

Delicious
Digg
Google
Yahoo