Baixe em PDF
Baixe em PDF
Ao trabalhar com o Oracle, você pode encontrar alguns registros duplicados. É possível excluir as linhas duplicadas identificando-as e usando seu próprio RowID (identificador de linha) ou seu endereço. Antes de começar, é recomendado criar um backup da tabela para o caso de você precisar de uma referência após excluir os registros.
Passos
-
Identifique os registros duplicados. Neste exemplo, usaremos o nome "Alan". Confirme se os registros que pretende excluir estão realmente duplicados usando a seguinte sequência SQL.
-
Identifique os registros por meio da coluna "Nomes". Por exemplo, se tiver uma coluna chamada "Nome", substitua "nome_coluna" por "Nomes".
-
Identifique-os por meio de outras colunas. Se você pretende tentar identificar o registro duplicado por meio de uma coluna diferente, como por exemplo a idade do Alan, em vez de seu nome, insira "Idades" no lugar de "nome_coluna", e assim sucessivamente.
select nome_coluna , count ( nome_coluna ) from table group by nome_coluna having count ( nome_coluna ) > 1 ;
Publicidade
-
Usa o comando "select nome from nomes". Depois de "SQL", que significa "Standard Query Language" (Linguagem de Consulta Estruturada), digite "select nome from nomes".
-
Exclua todas a linhas com o nome duplicado. Depois de "SQL", digite "delete from nomes where nome='Alan';". Observe que é importante escrever o nome "Alan" com a primeira letra maiúscula para que ele seja excluído. Depois de "SQL", digite "commit". [1] X Fonte de pesquisa
-
Insira novamente a linha, dessa vez sem o registro duplicado. Agora que você excluiu todas as linhas com o nome do exemplo, "Alan", é possível inserir outro nome digitando "insert into nome values ('Alan');." Depois de "SQL", digite "commit" para criar uma nova linha.
-
Visualize a lista nova. Após completar os passos acima, verifique se não há mais registros duplicados digitando "select * from nomes".
SQL > select nome from nomes ; NOME
Alan Carrie Tom Alan rows selected . SQL > delete from nomes where nome = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into nomes values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from nomes ; NOME
Alan Carrie Tom rows selected .Publicidade
-
Selecione o RowID que deseja excluir. Depois de "SQL", digite "select rowid, nome from nomes;".
-
Exclua o registo duplicado. Depois de "SQL", digite "delete from nomes a where rowid > (select min(rowid) from nomes b where b.nome=a.nome);" para excluir os registros duplicados. [2] X Fonte de pesquisa
-
Verifique os registros duplicados. Após realizar os passos acima, verifique se ainda existem registros duplicados digitando "select rowid,nome from nomes;" e depois "commit."
SQL > select rowid , nome from nomes ; ROWID NOME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rows selected . SQL > delete from nomes a where rowid > ( select min ( rowid ) from nomes b where b . nome = a . nome ); rows deleted . SQL > select rowid , nome from nomes ; ROWID NOME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom rows selected . SQL > commit ; Commit complete .
Publicidade
-
Selecione as linhas. Depois de "SQL", digite "select * from nomes;" para verificar as linhas.
-
Exclua as linhas duplicadas identificando suas colunas. Depois de "SQL'", digite "delete from nomes a where rowid > (select min(rowid) from nomes b where b.nome=a.nome and b.idade=a.idade);" para excluir os registros duplicados. [3] X Fonte de pesquisa
-
Verifique os registros duplicados. Após finalizar os passos acima, digite "select * from nomes;" e depois "commit" para verificar se a exclusão dos registros duplicados foi bem-sucedida.
SQL > select * from nomes ; NOME IDADE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 rows selected . SQL > delete from nomes a where rowid > ( select min ( rowid ) from nomes b where b . nome = a . nome and b . idade = a . idade ); row deleted . SQL > select * from nomes ; NOME IDADE
Alan 50 Carrie 51 Tom 52 rows selected . SQL > commit ; Commit complete .Publicidade
Avisos
- Crie um backup da tabela em sua sessão e use-a para ver quais eram os dados da tabela original antes de excluir os registros duplicados (no caso de houver alguma dúvida).
SQL > create table alan . nomes_backup as select * from nomes ; Table created .
Publicidade
Referências
Publicidade