Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

amandita

Selecionar IDs duplicados

Recommended Posts

Bom dia!Eu tenho uma tabela que tem alguns ID duplicados. Como eu faço para selecionar SOMENTE esses duplicados?Espero ajuda de vocês!!!!Obrigada!!! =DAmanda

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma alternativa é fazer um count do cod e verificar na clausula having quais qtdades são maiores que 1

 

exemplo:

set nocount on declare @teste table (cod int, nome varchar(30))
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (2, 'Romenia')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (4, 'Italia')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (5, 'Argentina')
insert into @teste (cod, nome) values (2, 'Romenia')

select cod, count(*) as nro_repeticoes from @teste group by cod
having count(*)>1

 

e se precisar apagar os repetidos

--armazenando somente uma ocorrência (distinct) na virtual #tempx
select distinct t.cod, t.nome into #tempx from @teste t
inner join (select cod , count(*) as nro_repeticoes from @teste group by cod
having count(*)>1) taux on t.cod = taux.cod

--apagando todos os repetidos
delete from @teste where cod in (
select distinct t.cod from @teste t
inner join (select cod , count(*) as nro_repeticoes from @teste group by cod
	having count(*)>1) taux on t.cod = taux.cod
)
--reinserindo somente uma ocorrência dos repetidos na tabela principal a partir da tabela temporária #tempx
insert into @teste (cod, nome)
select cod, nome from #tempx --destruindo a tabela virtual
drop table #tempx

--consultado a tabela depois das modificações
select * from @teste

OBS.: exemplo feito para somente códigos repetidos e nomes repetidos

 

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma alternativa é fazer um count do cod e verificar na clausula having quais qtdades são maiores que 1

 

exemplo:

set nocount on declare @teste table (cod int, nome varchar(30))
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (2, 'Romenia')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (4, 'Italia')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (1, 'Brasil')
insert into @teste (cod, nome) values (3, 'USA')
insert into @teste (cod, nome) values (5, 'Argentina')
insert into @teste (cod, nome) values (2, 'Romenia')

select cod, count(*) as nro_repeticoes from @teste group by cod
having count(*)>1

 

e se precisar apagar os repetidos

--armazenando somente uma ocorrência (distinct) na virtual #tempx
select distinct t.cod, t.nome into #tempx from @teste t
inner join (select cod , count(*) as nro_repeticoes from @teste group by cod
having count(*)>1) taux on t.cod = taux.cod

--apagando todos os repetidos
delete from @teste where cod in (
select distinct t.cod from @teste t
inner join (select cod , count(*) as nro_repeticoes from @teste group by cod
	having count(*)>1) taux on t.cod = taux.cod
)
--reinserindo somente uma ocorrência dos repetidos na tabela principal a partir da tabela temporária #tempx
insert into @teste (cod, nome)
select cod, nome from #tempx --destruindo a tabela virtual
drop table #tempx

--consultado a tabela depois das modificações
select * from @teste

OBS.: exemplo feito para somente códigos repetidos e nomes repetidos

 

 

t+

Obrigadaaa!! Era exatamente o q eu precisava!! Funcionou certinho! =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.