none
Deixar apenas um registro em uma tabela com três ou mais registros duplicados/triplicados RRS feed

  • Pergunta

  • Bom Dia.

    Tenho uma tabela onde possuo registros duplicados e/ou triplicados, há algum método que poderia ser feito para que sobrasse apenas um registro desses duplicados/triplicados dentro da tabela...???

    Muito Obrigado.

    segunda-feira, 11 de março de 2013 13:23

Todas as Respostas

  • Uma maneira rapida, seria voce inserir os registros utilizando um distinct em uma outra tabela temporaria, truncar esta sua tabela e depois inserir os registros da temporaria que voce pegou usando o distinct na sua tabela original.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 11 de março de 2013 13:27
  • Hebert, tem como sim, mas para isso você tem que definir o critério para quais registros você vai querer manter.

    Uma abordagem é a criação de uma CTE e utilizar a função row_number() e, a partir dela, excluir os registros maiores que 1.

    Segue um exemplo:

    create table duplicados (a int, b varchar(10))
    go
    insert into duplicados values (1,'a'),(2,'b'),(3,'c')
    go 10 -- insere 10 registros duplicados
    select * from duplicados
    order by a
    go
    ;with cte_dup 
    as
    (
    select a, b, ROW_NUMBER() OVER (partition by a,b order by a,b) as ordem
    from duplicados
    )
    delete from cte_dup
    where ordem > 1 -- Exclui todos os registros da tabela duplicados com ordem > 1
    GO
    select * from duplicados
    order by a
    

    Espero que te ajude.

    []'s

    segunda-feira, 11 de março de 2013 13:52