Como Excluir Registros Duplicados no Oracle

Baixe em PDFBaixe 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.

Método 1
Método 1 de 4:

Identificando os registros duplicados

Baixe em PDF
  1. How.com.vn Português: Step 1 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.
  2. Step 2 Identifique os registros por meio da coluna "Nomes".
    Por exemplo, se tiver uma coluna chamada "Nome", substitua "nome_coluna" por "Nomes".
  3. How.com.vn Português: Step 3 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
Método 2
Método 2 de 4:

Excluindo um único registro duplicado

Baixe em PDF
  1. Step 1 Usa o comando "select nome from nomes".
    Depois de "SQL", que significa "Standard Query Language" (Linguagem de Consulta Estruturada), digite "select nome from nomes".
  2. How.com.vn Português: Step 2 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]
  3. How.com.vn Português: Step 3 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.
  4. How.com.vn Português: Step 4 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
Método 3
Método 3 de 4:

Excluindo múltiplos registro duplicados

Baixe em PDF
  1. How.com.vn Português: Step 1 Selecione o RowID que deseja excluir.
    Depois de "SQL", digite "select rowid, nome from nomes;".
  2. How.com.vn Português: Step 2 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]
  3. How.com.vn Português: Step 3 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
Método 4
Método 4 de 4:

Excluindo linhas com colunas

Baixe em PDF
  1. How.com.vn Português: Step 1 Selecione as linhas.
    Depois de "SQL", digite "select * from nomes;" para verificar as linhas.
  2. How.com.vn Português: Step 2 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]
  3. How.com.vn Português: Step 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.
Publicidade

Sobre este guia How.com.vn

How.com.vn Português: Equipe How.com.vn
Coescrito por :
Redação do How.com.vn
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.
Categorias: Programação
Esta página foi acessada 30 165 vezes.

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.

Notices:
  • - 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.

Publicidade