4 maneiras de excluir registros duplicados no Oracle

Índice:

4 maneiras de excluir registros duplicados no Oracle
4 maneiras de excluir registros duplicados no Oracle

Vídeo: 4 maneiras de excluir registros duplicados no Oracle

Vídeo: 4 maneiras de excluir registros duplicados no Oracle
Vídeo: 4 Truques Para Os Álbuns De Fotos No iPhone 2024, Abril
Anonim

Ao trabalhar no Oracle, você pode descobrir que alguns de seus registros têm duplicatas. Você pode excluir essas linhas duplicadas identificando-as e usando seu RowID ou endereço de linha. Antes de começar, você deve criar uma tabela de backup para o caso de precisar consultá-los depois de excluir os registros.

Passos

Método 1 de 4: Identificando sua duplicata

Excluir registros duplicados no Oracle Etapa 1
Excluir registros duplicados no Oracle Etapa 1

Etapa 1. Identifique a duplicata

Nesse caso, identifique a duplicata do exemplo, "Alan". Certifique-se de que os registros que você está tentando excluir sejam realmente duplicados, digitando o SQL abaixo.

Excluir registros duplicados no Oracle Etapa 2
Excluir registros duplicados no Oracle Etapa 2

Etapa 2. Identificação de uma coluna chamada "Nomes

"No caso de uma coluna chamada" Nomes ", você substituiria" nome_da_coluna "por Nomes.

Excluir registros duplicados no Oracle Etapa 3
Excluir registros duplicados no Oracle Etapa 3

Etapa 3. Identificação de outras colunas

Se você estiver tentando identificar a duplicata por uma coluna diferente, por exemplo a idade de Alan em vez de seu nome, você deve inserir "Idades" no lugar de "column_name" e assim por diante.

selecione nome_da_coluna, contagem (nome_da_coluna) do grupo de tabelas por nome_da_coluna tendo contagem (nome_da_coluna)> 1;

Método 2 de 4: Excluindo uma única duplicata

Excluir registros duplicados no Oracle Etapa 4
Excluir registros duplicados no Oracle Etapa 4

Etapa 1. Selecione "nome entre os nomes

"Depois de" SQL ", que significa Linguagem de consulta padrão, digite" selecione o nome dos nomes ".

Excluir registros duplicados no Oracle Etapa 5
Excluir registros duplicados no Oracle Etapa 5

Etapa 2. Exclua todas as linhas com o nome duplicado

Depois de "SQL", digite "delete from names where name = 'Alan';." Observe que a capitalização é importante aqui, portanto, isso excluirá todas as linhas chamadas "Alan". Depois de "SQL", digite "commit".

Excluir registros duplicados no Oracle Etapa 6
Excluir registros duplicados no Oracle Etapa 6

Etapa 3. Alugue a linha sem uma duplicata

Agora que você excluiu todas as linhas com o nome de exemplo "Alan", pode inserir uma de volta digitando "inserir nos valores de nome ('Alan');." Depois de "SQL", digite "commit" para criar sua nova linha.

Excluir registros duplicados no Oracle Etapa 7
Excluir registros duplicados no Oracle Etapa 7

Etapa 4. Veja sua nova lista

Depois de concluir as etapas acima, você pode verificar se não tem mais registros duplicados digitando "selecionar * de nomes."

SQL> selecione o nome dos nomes; NAME ------------------------------ Alan Carrie Tom Alan linhas selecionadas. SQL> delete from names where name = 'Alan'; linhas excluídas. SQL> commit; Compromisso completo. SQL> inserir valores de nomes ('Alan'); linha criada. SQL> commit; Compromisso completo. SQL> selecione * a partir de nomes; NAME ------------------------------ Linhas selecionadas de Alan Carrie Tom.

Método 3 de 4: Excluindo várias duplicatas

Excluir registros duplicados no Oracle Etapa 8
Excluir registros duplicados no Oracle Etapa 8

Etapa 1. Selecione o RowID que deseja excluir

Depois de "SQL", digite "select rowid, name from names;."

Excluir registros duplicados no Oracle Etapa 9
Excluir registros duplicados no Oracle Etapa 9

Etapa 2. Exclua a duplicata

Depois de "SQL", digite "delete from names a where rowid> (selecione min (rowid) from names b where b.name = a.name);" para excluir registros duplicados.

Excluir registros duplicados no Oracle Etapa 10
Excluir registros duplicados no Oracle Etapa 10

Etapa 3. Verifique se há duplicatas

Depois de concluir o acima, os comandos verificam se você ainda tem registros duplicados digitando "select rowid, name from names;" e então "commit".

SQL> selecione rowid, nome de nomes; NOME DO ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan linhas selecionadas. SQL> deletar dos nomes a where rowid> (selecionar min (rowid) from names b where b.name = a.name); linhas excluídas. SQL> selecione rowid, nome de nomes; NOME DO ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom linhas selecionadas. SQL> commit; Compromisso completo.

Método 4 de 4: Excluindo Linhas com Colunas

Excluir registros duplicados no Oracle Etapa 11
Excluir registros duplicados no Oracle Etapa 11

Etapa 1. Selecione suas linhas

Depois de "SQL", digite "select * from names;" para ver suas linhas.

Excluir registros duplicados no Oracle Etapa 12
Excluir registros duplicados no Oracle Etapa 12

Etapa 2. Exclua as linhas duplicadas identificando suas colunas

Depois de "SQL '", digite "deletar dos nomes a onde rowid> (selecione min (rowid) dos nomes b onde b.name = a.name e b.age = a.age);" para excluir os registros duplicados.

Excluir registros duplicados no Oracle Etapa 13
Excluir registros duplicados no Oracle Etapa 13

Etapa 3. Verifique se há duplicatas

Depois de concluir as etapas acima, digite "selecionar * dos nomes;" e então "confirmar" para verificar se você excluiu os registros duplicados com sucesso.

SQL> selecione * a partir de nomes; NOME IDADE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 linhas selecionadas. SQL> excluir dos nomes a where rowid> (selecionar min (rowid) dos nomes b onde b.name = a.name e b.age = a.age); linha excluída. SQL> selecione * a partir de nomes; NOME IDADE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 linhas selecionadas. SQL> commit; Compromisso completo.

Avisos

  • Crie uma tabela de backup em seu próprio login que você pode usar para mostrar o que estava lá antes de qualquer exclusão ocorrer (caso haja alguma dúvida).

    SQL> crie a tabela alan.names_backup como select * from names; Tabela criada.

Recomendado: