eliminar duplicados

22/02/2007 - 01:43 por Jose | Informe spam
Estimados(as).

Tengo una tabla con 5 campos las cuales tienen registros duplicados.
Como eliminar o dejar solo 1 de esos registros que estarian duplicados con
una sentencia sql?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
22/02/2007 - 03:31 | Informe spam
Esto te deja en tabla_sin_duplicados una vez cada registro sin duplicar.


Select
col1,
col2,
col3,
col4,
col5
into tabla_sin_duplicados
from tabls_con_Duplicados
group by
col1,
col2,
col3,
col4,
col5





Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Jose" wrote in message
news:%23FTU%
Estimados(as).

Tengo una tabla con 5 campos las cuales tienen registros duplicados.
Como eliminar o dejar solo 1 de esos registros que estarian duplicados con
una sentencia sql?

Gracias de antemano.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
22/02/2007 - 16:03 | Informe spam
Jose,

Por casualidad tienes alguna columna que sirva para identificar unicamente
cada fila en tu tabla?.

Una forma puede ser agregando una columna con propiedad identity para
identificar unicamente cada fila de la tabla. Luego podemos usar esta columna
para dejar solo una fila por cada grupo donde existan repetidos.

alter table dbo.tu_tabla
add sk int not null identity(1, 1) constraint uq_tu_tabla_sk unique
go

delete dbo.tu_tabla
where exists (
select *
from dbo.tu_tabla as t
where
t.c1 = dbo.tu_tabla.c1
and t.c2 = dbo.tu_tabla.c2
and t.c3 = dbo.tu_tabla.c3
and t.c4 = dbo.tu_tabla.c4
and t.c5 = dbo.tu_tabla.c5
and t.sk < dbo.tu_tabla.sk
)
go

alter dbo.tu_tabla
drop constraint uq_tu_tabla_sk
go

alter dbo.tu_tabla
drop column sk
go

;with cte
as
(
select
c1, c2, c3, c4, c5, ..., cn
row_number() over(partition by c1, c2, c3, c4, c5 order by c1, c2, c3,
c4, c5) as sk
from
dbo.tu_tabla
)
delete cte
where sk > 1;
go

How to remove duplicate rows from a table in SQL Server
http://support.microsoft.com/defaul...roduct=sql


AMB

"Jose" wrote:

Estimados(as).

Tengo una tabla con 5 campos las cuales tienen registros duplicados.
Como eliminar o dejar solo 1 de esos registros que estarian duplicados con
una sentencia sql?

Gracias de antemano.



Respuesta Responder a este mensaje
#3 Jose
22/02/2007 - 22:02 | Informe spam
Gracias pero queria evitar crear un campo adicional a mi tabla y hacerlo
directamente con un query.

"Alejandro Mesa" escribió en el
mensaje news:
Jose,

Por casualidad tienes alguna columna que sirva para identificar unicamente
cada fila en tu tabla?.

Una forma puede ser agregando una columna con propiedad identity para
identificar unicamente cada fila de la tabla. Luego podemos usar esta
columna
para dejar solo una fila por cada grupo donde existan repetidos.

alter table dbo.tu_tabla
add sk int not null identity(1, 1) constraint uq_tu_tabla_sk unique
go

cuenta
delete dbo.tu_tabla
where exists (
select *
from dbo.tu_tabla as t
where
t.c1 = dbo.tu_tabla.c1
and t.c2 = dbo.tu_tabla.c2
and t.c3 = dbo.tu_tabla.c3
and t.c4 = dbo.tu_tabla.c4
and t.c5 = dbo.tu_tabla.c5
and t.sk < dbo.tu_tabla.sk
)
go

alter dbo.tu_tabla
drop constraint uq_tu_tabla_sk
go

alter dbo.tu_tabla
drop column sk
go

;with cte
as
(
select
c1, c2, c3, c4, c5, ..., cn
row_number() over(partition by c1, c2, c3, c4, c5 order by c1, c2, c3,
c4, c5) as sk
from
dbo.tu_tabla
)
delete cte
where sk > 1;
go

How to remove duplicate rows from a table in SQL Server
http://support.microsoft.com/defaul...roduct=sql


AMB

"Jose" wrote:

Estimados(as).

Tengo una tabla con 5 campos las cuales tienen registros duplicados.
Como eliminar o dejar solo 1 de esos registros que estarian duplicados
con
una sentencia sql?

Gracias de antemano.



Respuesta Responder a este mensaje
#4 Jose
22/02/2007 - 22:02 | Informe spam
Gracias
"Jose Mariano Alvarez"
escribió en el
mensaje news:
Esto te deja en tabla_sin_duplicados una vez cada registro sin duplicar.


Select
col1,
col2,
col3,
col4,
col5
into tabla_sin_duplicados
from tabls_con_Duplicados
group by
col1,
col2,
col3,
col4,
col5





Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Jose" wrote in message
news:%23FTU%
Estimados(as).

Tengo una tabla con 5 campos las cuales tienen registros duplicados.
Como eliminar o dejar solo 1 de esos registros que estarian duplicados
con
una sentencia sql?

Gracias de antemano.






Respuesta Responder a este mensaje
#5 Alejandro Mesa
22/02/2007 - 22:57 | Informe spam
Jose,

Si tienes alguna columna que permita identificar unicamente cada fila, si
podemos hacerlo con una sentencia delete. Si estas usando sql server 2005,
tambien.

AMB

"Jose" wrote:

Gracias pero queria evitar crear un campo adicional a mi tabla y hacerlo
directamente con un query.

"Alejandro Mesa" escribió en el
mensaje news:
> Jose,
>
> Por casualidad tienes alguna columna que sirva para identificar unicamente
> cada fila en tu tabla?.
>
> Una forma puede ser agregando una columna con propiedad identity para
> identificar unicamente cada fila de la tabla. Luego podemos usar esta
> columna
> para dejar solo una fila por cada grupo donde existan repetidos.
>
> alter table dbo.tu_tabla
> add sk int not null identity(1, 1) constraint uq_tu_tabla_sk unique
> go
>
> cuenta
> delete dbo.tu_tabla
> where exists (
> select *
> from dbo.tu_tabla as t
> where
> t.c1 = dbo.tu_tabla.c1
> and t.c2 = dbo.tu_tabla.c2
> and t.c3 = dbo.tu_tabla.c3
> and t.c4 = dbo.tu_tabla.c4
> and t.c5 = dbo.tu_tabla.c5
> and t.sk < dbo.tu_tabla.sk
> )
> go
>
> alter dbo.tu_tabla
> drop constraint uq_tu_tabla_sk
> go
>
> alter dbo.tu_tabla
> drop column sk
> go
>
> ;with cte
> as
> (
> select
> c1, c2, c3, c4, c5, ..., cn
> row_number() over(partition by c1, c2, c3, c4, c5 order by c1, c2, c3,
> c4, c5) as sk
> from
> dbo.tu_tabla
> )
> delete cte
> where sk > 1;
> go
>
> How to remove duplicate rows from a table in SQL Server
> http://support.microsoft.com/defaul...roduct=sql
>
>
> AMB
>
> "Jose" wrote:
>
>> Estimados(as).
>>
>> Tengo una tabla con 5 campos las cuales tienen registros duplicados.
>> Como eliminar o dejar solo 1 de esos registros que estarian duplicados
>> con
>> una sentencia sql?
>>
>> Gracias de antemano.
>>
>>
>>



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