Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Registros duplicados

7 views
Skip to first unread message

Victor M

unread,
May 6, 2008, 3:08:52 PM5/6/08
to
Tengo la sig consulta para determinar los registros duplicados en una tabla

select numero,count(iniciales) from empleado
group by numero
having count(iniciales)>1
bien lo que quiero es hacer un delete en vez de el select como deberia
hacer la consulta
Saludos


Alejandro Mesa

unread,
May 6, 2008, 4:09:00 PM5/6/08
to
Victor M,

Cual version de SQL Server usas?

;with dup
as
(
select
numero,
iniciales,
row_number() over(partition by numero order by iniciales) as rn
from
empleado
)
delete cte
where rn > 1;

Asegurate de hacer la prueba en una db que sea la de produccion.

AMB

Victor M

unread,
May 6, 2008, 9:03:34 PM5/6/08
to
Uso Sql 2000
"Alejandro Mesa" <Alejan...@discussions.microsoft.com> escribió en el
mensaje news:4A519B62-24C4-447F...@microsoft.com...

Alejandro Mesa

unread,
May 7, 2008, 9:55:01 AM5/7/08
to
Victor M,

- Tenemos algun grupo de columnas que puedan identificar unicamente una fila?
- Que tan grande es la tabla?

Si la tabla no es muy grande:

alter table dbo.empleados
add sk int not null identity(1, 1)
go

create unique index empleados_sk_u_nc_ix
on dbo.empleados(sk)
go

delete dbo.empleados
where exists (
select *
from dbo.empleados as e
where e.numero = dbo.empleados.numero and e.sk < dbo.empleados.sk
)
go

drop index dbo.empleados.empleados_sk_u_nc_ix
go

alter table dbo.empleados
drop column sk
go

alter table dbo.empleados
with check add constraint uq_empleados_numero unique (numero)
go

AMB

Alfredo Novoa

unread,
May 7, 2008, 10:16:13 AM5/7/08
to
On Tue, 6 May 2008 13:08:52 -0600, "Victor M" <jaro...@hotmail.com>
wrote:

A lo mejor quieres esto:

delete empleado where numero in (select numero from empleado group by
numero having count(iniciales) > 1)


Saludos
Alfredo

Penta

unread,
May 7, 2008, 6:23:26 PM5/7/08
to
Alfredo, el problema es que dicho delete borra todos los registros que
estan duplicados y Victor M se quiere quedar con 1 registro de los
duplicados, es decir:

si tiene

Dato
1
1
2

quiere quedarse con
Dato
1
2

Al parecer no se puede en SS2000 con una sola instruccion y la
solución de Alejandro Mesa es la solución, incluso para tablas
grandes.
Atte.
Penta.

Victor M

unread,
May 7, 2008, 11:49:25 AM5/7/08
to
Gracias a todos por sus respuestas
"Victor M" <jaro...@hotmail.com> escribió en el mensaje
news:%23vZasy6...@TK2MSFTNGP04.phx.gbl...
0 new messages