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.

Método 1
Método 1 de 4:

Identificando os registros duplicados

Baixe em PDF
  1. Neste exemplo, usaremos o nome "Alan". Confirme se os registros que pretende excluir estão realmente duplicados usando a seguinte sequência SQL.
  2. Por exemplo, se tiver uma coluna chamada "Nome", substitua "nome_coluna" por "Nomes".
  3. 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
Método 2
Método 2 de 4:

Excluindo um único registro duplicado

Baixe em PDF
  1. Depois de "SQL", que significa "Standard Query Language" (Linguagem de Consulta Estruturada), digite "select nome from nomes".
  2. 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. 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. 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
Método 3
Método 3 de 4:

Excluindo múltiplos registro duplicados

Baixe em PDF
  1. Depois de "SQL", digite "select rowid, nome from nomes;".
  2. 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. 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
Método 4
Método 4 de 4:

Excluindo linhas com colunas

Baixe em PDF
  1. Depois de "SQL", digite "select * from nomes;" para verificar as linhas.
  2. 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. 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

Sobre este guia wikiHow

Esta página foi acessada 30 506 vezes.

Este artigo foi útil?

Publicidade