Eliminacion de Registras duplicados

17/05/2006 - 15:06 por Ingeniero | Informe spam
Tengo una tabla el cual por error (no colocarle indices con llave primaria)
tengo 66 registros duplicados dos veces, al generar la consulta y agruparlo
por el campo unico me arroja 132 registros.

Como hago para eliminar los 62 registros de mas? teniendo en cuenta si son
exactamente iguales en todos sus campos?

Bernardo Cordoba G.
Ingeniero de Sistemas
Cartagena, Bolivar

____
Todo hombre es tonto por lo menos 5 minutos al día; la sabiduría consiste en
no rebasar el límite.
Elbert Hubbard

Preguntas similare

Leer las respuestas

#1 Ingeniero
17/05/2006 - 15:10 | Informe spam
La consulta que genero para determinar cuales los registros duplicados es
agrupandolos y contandolos por el campo unico y luego seleccionando los que
sean mayores que dos para que me los muestre.

select T.*
from dbcitas15..cicita2006 as T,
(select count(*) as Cnt, ccinumcit
from dbcitas15..cicita2006
group by ccinumcit) as L
where L.cnt>=2 and
L.ccinumcit=T.ccinumcit
order by T.ccinumcit

Bernardo Cordoba G.
Ingeniero de Sistemas
Cartagena, Bolivar

____
Todo hombre es tonto por lo menos 5 minutos al día; la sabiduría consiste en
no rebasar el límite.
Elbert Hubbard


"Ingeniero" escribió:

Tengo una tabla el cual por error (no colocarle indices con llave primaria)
tengo 66 registros duplicados dos veces, al generar la consulta y agruparlo
por el campo unico me arroja 132 registros.

Como hago para eliminar los 62 registros de mas? teniendo en cuenta si son
exactamente iguales en todos sus campos?

Bernardo Cordoba G.
Ingeniero de Sistemas
Cartagena, Bolivar

____
Todo hombre es tonto por lo menos 5 minutos al día; la sabiduría consiste en
no rebasar el límite.
Elbert Hubbard
Respuesta Responder a este mensaje
#2 Alejandro Mesa
17/05/2006 - 15:54 | Informe spam
Bernardo,

Adiciona una columna con propiedad identity.

alter table cicita2006
add c1 int not null identity
go

create unique nonclustered index cicita2006_c1_u_nc_idx
on cicita2006 (c1 asc)
go

que el de la fila corriente
delete cicita2006
where exists (
select *
from cicita2006 as a
where a.c1 > cicita2006.c1 and a.ccinumcit = cicita2006.ccinumcit
)
go

drop index cicita2006.cicita2006_c1_u_nc_idx
go

alter table cicita2006
drop column c1
go

Pruebalo antes de salvar el resultado final. Encierra el delete en una
transaccion, chequea el resultado y luego haces commit si todo esta
bien o rollback si algo no esta saliendo como se esperaba.


AMB
Respuesta Responder a este mensaje
#3 Ingeniero
17/05/2006 - 17:04 | Informe spam
Alejandro buenos Dias...

Muchar gracais por tu ayuda, pues no se me habia ocurrido hacer este
procedimeinto.
Me sirvio a la perfección.

Saludos desde Cartagena, Colombia

Bernardo Cordoba G.
Ingeniero de Sistemas
Cartagena, Bolivar

____
Todo hombre es tonto por lo menos 5 minutos al día; la sabiduría consiste en
no rebasar el límite.
Elbert Hubbard


"Alejandro Mesa" escribió:

Bernardo,

Adiciona una columna con propiedad identity.

alter table cicita2006
add c1 int not null identity
go

create unique nonclustered index cicita2006_c1_u_nc_idx
on cicita2006 (c1 asc)
go

que el de la fila corriente
delete cicita2006
where exists (
select *
from cicita2006 as a
where a.c1 > cicita2006.c1 and a.ccinumcit = cicita2006.ccinumcit
)
go

drop index cicita2006.cicita2006_c1_u_nc_idx
go

alter table cicita2006
drop column c1
go

Pruebalo antes de salvar el resultado final. Encierra el delete en una
transaccion, chequea el resultado y luego haces commit si todo esta
bien o rollback si algo no esta saliendo como se esperaba.


AMB


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida