none
Excluir Registros duplicados RRS feed

  • Pergunta

  • Aqui na empresa,um cliente resolveu por conta própria importar planilhas para o SQL Server, porém ele acabou importando uma mesma planilha duas vezes.

     

    Como excluir apenas os registros duplicados?

     

    Os campos da tabela são ID, Name, ZIP, Phone, Phone_Prefix, email, city

     

    Obrigado.

     

    Abraços

    segunda-feira, 27 de agosto de 2007 16:00

Respostas

  •  

    Olá Leandro!!

     

    Bom, se você tiver um campo ID auto-incremento, fica mais simples. Poderia fazer algo assim:

     

    Code Snippet

    DELETE FROM Tabela

    WHERE CampoID IN (

    SELECT max (CampoID) FROM Tabela

    GROUP BY Name, ZIP, Phone, Phone_Prefix, email, city)

     

     

    Agora, se não tiver campo ID, é melhor jogar os dados únicos numa tabela temporária, excluir os dados da origem, e incluir novamente. Veja:

     

    Code Snippet

    SELECT DISTINCT Name, ZIP, Phone, Phone_Prefix, email, city

    INTO #TabTemp

    FROM Tabela

     

    DELETE FROM Tabela

     

    INSERT INTO Tabela (Name, ZIP, Phone, Phone_Prefix, email, city)

    SELECT Name, ZIP, Phone, Phone_Prefix, email, city FROM #TabTemp

     

     

     

    Obs.: FAÇA backup da tabela antes, rs.

     

     

    Abraço

    segunda-feira, 27 de agosto de 2007 16:11
  •  

    Ahhhh, uma pequena correção!!

     

     

     

    Code Snippet

    DELETE FROM Tabela

    WHERE CampoID IN (

    SELECT max (CampoID) FROM Tabela

    GROUP BY Name, ZIP, Phone, Phone_Prefix, email, city

    HAVING count(*) > 1)

     

     

     

     

    Abraço

    segunda-feira, 27 de agosto de 2007 16:30

Todas as Respostas

  •  

    isso já foi bastante discutido aqui no fórum Leandro..

     

    segue um link com um exemplo do M. Colla..

     

    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=1041988&SiteID=21

     

    se não lhe satisfazer, procure por "registro duplicado" que vc irá encontrar vários posts..

     

    Abraço!

    segunda-feira, 27 de agosto de 2007 16:09
  •  

    Olá Leandro!!

     

    Bom, se você tiver um campo ID auto-incremento, fica mais simples. Poderia fazer algo assim:

     

    Code Snippet

    DELETE FROM Tabela

    WHERE CampoID IN (

    SELECT max (CampoID) FROM Tabela

    GROUP BY Name, ZIP, Phone, Phone_Prefix, email, city)

     

     

    Agora, se não tiver campo ID, é melhor jogar os dados únicos numa tabela temporária, excluir os dados da origem, e incluir novamente. Veja:

     

    Code Snippet

    SELECT DISTINCT Name, ZIP, Phone, Phone_Prefix, email, city

    INTO #TabTemp

    FROM Tabela

     

    DELETE FROM Tabela

     

    INSERT INTO Tabela (Name, ZIP, Phone, Phone_Prefix, email, city)

    SELECT Name, ZIP, Phone, Phone_Prefix, email, city FROM #TabTemp

     

     

     

    Obs.: FAÇA backup da tabela antes, rs.

     

     

    Abraço

    segunda-feira, 27 de agosto de 2007 16:11
  • Putz, cara brigadão.

     

    Eu já havia pesquisado e não tinha encontrado nada próximo disso.

     

    Abraços;

     

    segunda-feira, 27 de agosto de 2007 16:26
  •  

    Ahhhh, uma pequena correção!!

     

     

     

    Code Snippet

    DELETE FROM Tabela

    WHERE CampoID IN (

    SELECT max (CampoID) FROM Tabela

    GROUP BY Name, ZIP, Phone, Phone_Prefix, email, city

    HAVING count(*) > 1)

     

     

     

     

    Abraço

    segunda-feira, 27 de agosto de 2007 16:30
  • Putz, cara valeu, ainda bem que eu havia percebido o erro antes de executar.

     

    Valeu.

     

    segunda-feira, 27 de agosto de 2007 17:18
  •  

    Éééé... que susto eu também tomei... hehe.

     

     

    Abraço

    segunda-feira, 27 de agosto de 2007 18:49