Este artigo foi escrito em parceria com nossa equipe treinada de editores e pesquisadores que validaram sua precisão e abrangência.
O How.com.vn possui uma Equipe de Gerenciamento de Conteúdo que monitora cuidadosamente o trabalho de nossos editores para garantir que todo artigo atinja nossos padrões de qualidade.
Este artigo foi visualizado 30 165 vezes.
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_colunahaving 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]
- 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------------------------------AlanCarrieTomAlanrows 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------------------------------AlanCarrieTomrows 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]
- 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 AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alanrows selected.SQL > delete from nomes awhere rowid > (select min(rowid) from nomes bwhere b.nome=a.nome);rows deleted.SQL > select rowid,nome from nomes;ROWID NOME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tomrows 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]
- 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 50Carrie 51Tom 52Alan 50rows selected.SQL > delete from nomes awhere rowid > (select min(rowid) from nomes bwhere b.nome=a.nomeand b.idade=a.idade);row deleted.SQL > select * from nomes;NOME IDADE-----------------------------------------Alan 50Carrie 51Tom 52rows 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.
Referências
Este artigo foi útil?
⚠️ Disclaimer:
Content from Wiki How Português language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.
- - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
- - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
- - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
- - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.