borrar duplicados

13/09/2005 - 18:44 por anonimo | Informe spam
una pregunta? en una tabla tengo registros que por un campo se que son
duplicados, como puedo hacer para borrar por sentencia estos registros
duplicados pero quedandome con uno de los registros.

esto es lo que tengo:
campo1 campo2
x 1
d 5
e 3
x 1
x 1
d 5

quisiera que me quede:
campo1 campo2
x 1
d 5
e 3

gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
13/09/2005 - 18:47 | Informe spam
Cuando se hace este tipo de preguntas, es recomendable postear la estructura
de la tabla, incluyendo restricciones e indices.

No se si tu tabla tiene una clave primaria, por lo que te aconsejo que armes
una provisional y que la uses como referencia para este proceso.

alter tabla t1
add c1 int not null identity(1, 1)

create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)

delete t1
where exists(
select *
from t1 as a
where a.campo1 = t1.campo1 and a.campo2 = t1.campo2 and a.c1 < t1.c1
)

alter table t1
drop column c1
go

Recuerda hacer un backup full de la bd antes de hacer esto en produccion.

INF: How to Remove Duplicate Rows From a Table
http://support.microsoft.com/defaul...-us;139444


AMB

"anonimo" wrote:

una pregunta? en una tabla tengo registros que por un campo se que son
duplicados, como puedo hacer para borrar por sentencia estos registros
duplicados pero quedandome con uno de los registros.

esto es lo que tengo:
campo1 campo2
x 1
d 5
e 3
x 1
x 1
d 5

quisiera que me quede:
campo1 campo2
x 1
d 5
e 3

gracias.
Respuesta Responder a este mensaje
#2 anonimo
13/09/2005 - 19:23 | Informe spam
muchas gracias por tu respuesta, un apregunta adicional, para que es esta
linea:
create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)

gracias nuevamente.


"Alejandro Mesa" escribió:

Cuando se hace este tipo de preguntas, es recomendable postear la estructura
de la tabla, incluyendo restricciones e indices.

No se si tu tabla tiene una clave primaria, por lo que te aconsejo que armes
una provisional y que la uses como referencia para este proceso.

alter tabla t1
add c1 int not null identity(1, 1)

create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)

delete t1
where exists(
select *
from t1 as a
where a.campo1 = t1.campo1 and a.campo2 = t1.campo2 and a.c1 < t1.c1
)

alter table t1
drop column c1
go

Recuerda hacer un backup full de la bd antes de hacer esto en produccion.

INF: How to Remove Duplicate Rows From a Table
http://support.microsoft.com/defaul...-us;139444


AMB

"anonimo" wrote:

> una pregunta? en una tabla tengo registros que por un campo se que son
> duplicados, como puedo hacer para borrar por sentencia estos registros
> duplicados pero quedandome con uno de los registros.
>
> esto es lo que tengo:
> campo1 campo2
> x 1
> d 5
> e 3
> x 1
> x 1
> d 5
>
> quisiera que me quede:
> campo1 campo2
> x 1
> d 5
> e 3
>
> gracias.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
13/09/2005 - 19:28 | Informe spam
muchas gracias por tu respuesta, un apregunta adicional, para que es esta
linea:
create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)



Para crear un indice y darle opcion a sql server de usarlo en la senetencia:

delete t1
where exists(
select *
from t1 as a
where a.campo1 = t1.campo1 and a.campo2 = t1.campo2 and a.c1 < t1.c1
)


AMB

"anonimo" wrote:

muchas gracias por tu respuesta, un apregunta adicional, para que es esta
linea:
create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)

gracias nuevamente.


"Alejandro Mesa" escribió:

> Cuando se hace este tipo de preguntas, es recomendable postear la estructura
> de la tabla, incluyendo restricciones e indices.
>
> No se si tu tabla tiene una clave primaria, por lo que te aconsejo que armes
> una provisional y que la uses como referencia para este proceso.
>
> alter tabla t1
> add c1 int not null identity(1, 1)
>
> create unique nonclustered ix_u_nc_t1_c1 on t1(c1 asc)
>
> delete t1
> where exists(
> select *
> from t1 as a
> where a.campo1 = t1.campo1 and a.campo2 = t1.campo2 and a.c1 < t1.c1
> )
>
> alter table t1
> drop column c1
> go
>
> Recuerda hacer un backup full de la bd antes de hacer esto en produccion.
>
> INF: How to Remove Duplicate Rows From a Table
> http://support.microsoft.com/defaul...-us;139444
>
>
> AMB
>
> "anonimo" wrote:
>
> > una pregunta? en una tabla tengo registros que por un campo se que son
> > duplicados, como puedo hacer para borrar por sentencia estos registros
> > duplicados pero quedandome con uno de los registros.
> >
> > esto es lo que tengo:
> > campo1 campo2
> > x 1
> > d 5
> > e 3
> > x 1
> > x 1
> > d 5
> >
> > quisiera que me quede:
> > campo1 campo2
> > x 1
> > d 5
> > e 3
> >
> > gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida