none
Eliminar registros repetidos numa base de dados

    Question

  • GOSTARIA DE SABER COMO DEVO PROCEDER PARA PODER FILTRAR UMA BASE DE DADOS QUE CONTEM DIVERSOS REGISTROS REPETIDOS.

     

    QUAL PROCESSO OU METODO DEVO UTILIZAR PARA ENCONTRAR OS REGISTROS E CANCELAR ESTES QUE ESTÃO EXCEDENTES?

     

    POIS TENHO UMA BASE DEMASIADAMENTE GRANDE, COM CERCA DE 30 MILHOES DE REGISTROS!!

    DESDE JÁ MUITO GRATO!

    LEONARDO BANDEIRA VERISSIMO.

    Tuesday, August 10, 2010 8:14 PM

Answers

  • Leonardo

    segue um exemplo simples com CTE e row_number

     create table #tbTeste (codigo int, DescProd varchar(20))
     insert into #tbTeste values(1,'XBOX 360')
     insert into #tbTeste values(2,'PS3')
     insert into #tbTeste values(1,'XBOX 360')
     insert into #tbTeste values(2,'PS3')
     insert into #tbTeste values(3,'WII')
     
     ;with cte_dados
     as
     (
      select ROW_NUMBER() over(partition by codigo, descProd order by codigo,descprod) as 'dpl',* from #tbTeste
     )
     delete from cte_dados where dpl > 1
    
    select * from #tbTeste
    go
    drop table #tbTeste
    
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    Tuesday, August 10, 2010 10:03 PM

All replies

  • Qual a versao de seu SQL?

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    Tuesday, August 10, 2010 8:21 PM
  • É O SQL SERVER 2005
    Tuesday, August 10, 2010 8:24 PM
  • Leonardo

    segue um exemplo simples com CTE e row_number

     create table #tbTeste (codigo int, DescProd varchar(20))
     insert into #tbTeste values(1,'XBOX 360')
     insert into #tbTeste values(2,'PS3')
     insert into #tbTeste values(1,'XBOX 360')
     insert into #tbTeste values(2,'PS3')
     insert into #tbTeste values(3,'WII')
     
     ;with cte_dados
     as
     (
      select ROW_NUMBER() over(partition by codigo, descProd order by codigo,descprod) as 'dpl',* from #tbTeste
     )
     delete from cte_dados where dpl > 1
    
    select * from #tbTeste
    go
    drop table #tbTeste
    
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    Tuesday, August 10, 2010 10:03 PM
  • MARCELO,

    SOU GRATÍSSIMO POR TODOS OS AUXILIOS DISPENSADOS POR VOCÊ.

     

    MUITO OBRIGADO!!!!

     

    LEONARDO BANDEIRA.

    Wednesday, August 11, 2010 9:05 AM