Como remover registros duplicados em oracle
4: MétodosIdentificar registros duplicadosA exclusão de um único valor duplicadoExcluindo vários registrosExcluir linhas em colunas
Quando você trabalha com Oracle, muitas vezes registros duplicados podem aparecer. Você pode excluir essas linhas duplicadas identificando-os e usando sua própria RowID (identificador de linha) ou a direção da linha. Antes de começar, você deve criar uma cópia de segurança da tabela, se você precisa de revê-lo após a exclusão de registros.
método 1
Identificar registros duplicados1
Identifica registros duplicados. Neste caso, o processo será identificado "Alan" que aparece duas vezes na tabela. Certifique-se os registros estão indo para tentar realmente eliminar duplicatas usando a seguinte instrução SQL.
2
Identificá-los através da coluna chamada "nomes". Por exemplo, se você tivesse uma coluna chamada "nomes", Você deve substituir "column_name" por "nomes".
3
Identificá-los através de outras colunas. Se você vai tentar identificar duplicado através de uma coluna diferente, por exemplo, olhando para a idade de Alan, em vez de seu nome, insira "idade" ao invés de "column_name" e assim por diante.
SELECIONAR column_name, COUNT(column_name) DE TABELA GROUP BY column_name TENDO COUNT (column_name) gt; 1-
método 2
A exclusão de um único valor duplicado1
Caso de uso SELECT nome FROM nomes. Depois de SQL, oque quer dizer "Padrão Query Language" (Linguagem de consulta padronizada), tipo SELECT nome FROM nomes.
2
Exclui todas as linhas que contêm o nome duplicado. Depois de SQL, escrever a frase DELETE FROM nomes ONDE Name = `Alan`. Note-se que para remover todas as colunas com o nome "Alan" é importante para escrever a primeira letra maiúscula. Depois de SQL, escrever COMMIT.
3
Digite uma fila agora sem duplicada novamente. Agora que você tenha removido todas as linhas que têm o exemplo de nome "Alan", Você deve inserir novamente outra através da sentença Nomes INSERT INTO VALUES ( `Alan`) -. Depois de SQL, escrever COMMIT para criar a nova coluna.
4
Olhe para a nova lista. Depois de ter concluído as etapas acima, você pode verificar a tabela para garantir que não existem registros duplicados através da sentença * SELECT FROM nomes.
SQL gt; SELECIONAR nome DE nomes-NAME------------------------------AlanCarrieTomAlanrows selected.SQL gt; apagar nomes de onde name = `Alan`-fileiras deleted.SQL gt; COMMIT-complete.SQL gt; inserir nomes VALUES ( `Alan`) - linha created.SQL gt; COMMIT-complete.SQL gt; Selecione * de nomes-NAME ------------------------------ AlanCarrieTomrows selecionado.
método 3
Excluindo vários registros1
Selecione o RowID que deseja remover. Depois de SQL, escrever ROWID SELECT, nome names-.
2
Eliminar registros duplicados. Depois de SQL, escrever DELETE FROM ONDE nomes ROWID gt; (SELECT MIN (ROWID) DE ONDE nomes b.nombre b = a.nombre) - para remover registros duplicados.
3
Verifique se há duplicatas. Depois de completar os passos acima, verifique se há ainda estão escrevendo os registros duplicados ROWID SELECT, nome names- e logo COMMIT.
SQL gt; SELECIONAR ROWID,nome DE names-ROWID NOME------------------ ------------------------------AlanAABJnsAAGAAAdfOAAB AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alanrows selected.SQL gt; awhere apagar nomes de rowid gt; (Selecione min (rowid) a partir bwhere nomes b.nombre = a.nombre) -Linhas deleted.SQL gt; selecione rowid nome, rowid de nome-NAME ------------------ ----------------------- ------- AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tomrows selected.SQL gt; commit-Commit completa.}}
método 4
Excluir linhas em colunas1
Selecionar linhas. Depois de SQL, escrever * SELECT FROM names- para ver as fileiras.
2
Elimina linhas duplicadas identificando-os através de suas colunas. Depois de SQL, escrever DELETE FROM ONDE nomes ROWID gt; (SELECT MIN (ROWID) DE ONDE nomes b = b.nombre a.nombre E b.edad = a.edad) - para remover registros duplicados.
3
Verifique se há duplicatas. Depois de completar os passos acima, verifique se há ainda estão escrevendo os registros duplicados ROWID SELECT, nome names- e logo COMMIT para verificar se eles eliminaram com sucesso registros duplicados.
SQL gt; SELECIONAR * DE nomes-NOMBREEDAD------------------------------ ----------Alan 50Carrie 51tom 52Alan 50ROWS seleccionado.SQL gt; APAGAR DE nomesONDE ROWID gt; (SELECIONAR MIN(ROWID) DE nomes de bONDE b.nombre=a.nombreE b.age=a.age)-ROW suprimido.SQL gt; SELECIONAR * DE nomes-NOMBREEDAD------------------------------ ----------Alan 50Carrie 51tom 52ROWS seleccionado.SQL gt; COMMIT-COMMIT completa.
avisos
- Crie um backup de sua tabela em sua sessão e usá-lo para ver o que os dados da tabela original foram antes de remover duplicatas (se você tiver qualquer dúvida).
SQL gt; CRIAR TABELA alan.names_backup AS SELECIONAR * DE names-TABELA criado.