Pregunta con delete

29/12/2004 - 14:11 por Carlos | Informe spam
Cordial saludo

En una tabla tengo varios registros repetidos, como hago para borrarlos y
dejar solo 1?? Ej:
carlos
carlos
julian
julian

Debe quedar:
carlos
julian

Preguntas similare

Leer las respuestas

#6 Eladio Rincón
30/12/2004 - 20:50 | Informe spam
Hola,
con permiso de Carlos que seguro ya está de copas ;-)

creo que tu consulta no borraba ninguna fila

he hecho esto a ver si sirve; he añadido una columna identity para tener una
"guia" de quien es el registro que quiero preservar (en mi caso sería el
identity más bajo)

use tempdb
go
drop table t
go
create table t (id int)
go
insert into t select 1
insert into t select 2
insert into t select 1
insert into t select 2
insert into t select 3
insert into t select 4
insert into t select 3
go
delete from t where id not in (select distinct id from t)
go
select * from t
go
alter table t add id2 int identity
go

delete t1 from t t1
join (
select id, min(id2) id2 from t
group by id) t2
on t1.id = t2.id and t1.id2 > t2.id2
go

alter table t drop column id2
go

select * from t

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"news.microsoft.com" wrote in message
news:
Por que lo decis?

el select distinct deja afuera los duplicados, y el delete los borra,
explicate un poco mejor por favor.

un abrazo
roberto

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Miguel, me parece que con esa sentencia no se encuentran los
resultados
> que Carlos espera...
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "news.microsoft.com" escribió en el mensaje
> news:uiLKM$
> > Yo no la complicaria y haria algo como:
> >
> > delete
> > from tabla
> > where nombre not in (select disctint nombre from tabla)
> >
> > Alvarez Arigos Roberto Miguel
> > Analista Superior de Sistemas
> >
> > "Carlos" escribió en el mensaje
> > news:
> > > Cordial saludo
> > >
> > > En una tabla tengo varios registros repetidos, como hago para
borrarlos
> y
> > > dejar solo 1?? Ej:
> > > carlos
> > > carlos
> > > julian
> > > julian
> > >
> > > Debe quedar:
> > > carlos
> > > julian
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Maxi
30/12/2004 - 20:50 | Informe spam
Hola y con el permiso de Carlos ;)

Ese select no deja afuera los duplicados, solo muestra uno de cada uno, pero
si tienes esto

Datos
A
A
B

dara como resultado
A
B

con lo cual el id A sigue estando del otro lado, me explico? veamos sino un
ejemplo mas clarificador:

==
create table #pepe (dato varchar(100))
go

insert into #pepe values ('a')
insert into #pepe values ('a')
insert into #pepe values ('b')
insert into #pepe values ('c')
insert into #pepe values ('d')

select * from #pepe where dato not in (select distinct(dato) from #pepe)
go

delete from #pepe
where dato not in (select distinct(dato) from #pepe)


Fijate que no borra ningun duplicado.

Si queres borrar duplicados podrias aplicar este metodo (entre otros tanto
;)

http://www.databasejournal.com/feat...hp/1438651

Un abrazo


Salu2
Maxi


"news.microsoft.com" escribió en el mensaje
news:
Por que lo decis?

el select distinct deja afuera los duplicados, y el delete los borra,
explicate un poco mejor por favor.

un abrazo
roberto

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Miguel, me parece que con esa sentencia no se encuentran los


resultados
que Carlos espera...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"news.microsoft.com" escribió en el mensaje
news:uiLKM$
> Yo no la complicaria y haria algo como:
>
> delete
> from tabla
> where nombre not in (select disctint nombre from tabla)
>
> Alvarez Arigos Roberto Miguel
> Analista Superior de Sistemas
>
> "Carlos" escribió en el mensaje
> news:
> > Cordial saludo
> >
> > En una tabla tengo varios registros repetidos, como hago para


borrarlos
y
> > dejar solo 1?? Ej:
> > carlos
> > carlos
> > julian
> > julian
> >
> > Debe quedar:
> > carlos
> > julian
> >
>
>






Respuesta Responder a este mensaje
#8 Eladio Rincón
30/12/2004 - 20:53 | Informe spam
Hola,
con permiso de Carlos que seguro ya está de copas ;-)

creo que tu consulta no borraba ninguna fila

he hecho esto a ver si sirve; he añadido una columna identity para tener una
"guia" de quien es el registro que quiero preservar (en mi caso sería el
identity más bajo)

use tempdb
go
drop table t
go
create table t (id int)
go
insert into t select 1
insert into t select 2
insert into t select 1
insert into t select 2
insert into t select 3
insert into t select 4
insert into t select 3
go
delete from t where id not in (select distinct id from t)
go
select * from t
go
alter table t add id2 int identity
go

delete t1 from t t1
join (
select id, min(id2) id2 from t
group by id) t2
on t1.id = t2.id and t1.id2 > t2.id2
go

alter table t drop column id2
go

select * from t

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"news.microsoft.com" wrote in message
news:
Por que lo decis?

el select distinct deja afuera los duplicados, y el delete los borra,
explicate un poco mejor por favor.

un abrazo
roberto

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Miguel, me parece que con esa sentencia no se encuentran los
resultados
> que Carlos espera...
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "news.microsoft.com" escribió en el mensaje
> news:uiLKM$
> > Yo no la complicaria y haria algo como:
> >
> > delete
> > from tabla
> > where nombre not in (select disctint nombre from tabla)
> >
> > Alvarez Arigos Roberto Miguel
> > Analista Superior de Sistemas
> >
> > "Carlos" escribió en el mensaje
> > news:
> > > Cordial saludo
> > >
> > > En una tabla tengo varios registros repetidos, como hago para
borrarlos
> y
> > > dejar solo 1?? Ej:
> > > carlos
> > > carlos
> > > julian
> > > julian
> > >
> > > Debe quedar:
> > > carlos
> > > julian
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#9 news.microsoft.com
30/12/2004 - 21:37 | Informe spam
Disculpenme, lo razone mal

simplemente pense en eliminar el complemento del resulset que me recupera el
select distinct, pero no lo probe

un abrazo
Roberto


"Maxi" escribió en el mensaje
news:%
Hola y con el permiso de Carlos ;)

Ese select no deja afuera los duplicados, solo muestra uno de cada uno,


pero
si tienes esto

Datos
A
A
B

dara como resultado
A
B

con lo cual el id A sigue estando del otro lado, me explico? veamos sino


un
ejemplo mas clarificador:

==>
create table #pepe (dato varchar(100))
go

insert into #pepe values ('a')
insert into #pepe values ('a')
insert into #pepe values ('b')
insert into #pepe values ('c')
insert into #pepe values ('d')

select * from #pepe where dato not in (select distinct(dato) from #pepe)
go

delete from #pepe
where dato not in (select distinct(dato) from #pepe)

>
Fijate que no borra ningun duplicado.

Si queres borrar duplicados podrias aplicar este metodo (entre otros tanto
;)

http://www.databasejournal.com/feat...hp/1438651

Un abrazo


Salu2
Maxi


"news.microsoft.com" escribió en el mensaje
news:
> Por que lo decis?
>
> el select distinct deja afuera los duplicados, y el delete los borra,
> explicate un poco mejor por favor.
>
> un abrazo
> roberto
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
> news:
>> Miguel, me parece que con esa sentencia no se encuentran los
> resultados
>> que Carlos espera...
>>
>>
>> Un saludo
>>
>> -
>> "Sólo sé que no sé nada. " (Sócrates)
>>
>> "news.microsoft.com" escribió en el mensaje
>> news:uiLKM$
>> > Yo no la complicaria y haria algo como:
>> >
>> > delete
>> > from tabla
>> > where nombre not in (select disctint nombre from tabla)
>> >
>> > Alvarez Arigos Roberto Miguel
>> > Analista Superior de Sistemas
>> >
>> > "Carlos" escribió en el mensaje
>> > news:
>> > > Cordial saludo
>> > >
>> > > En una tabla tengo varios registros repetidos, como hago para
> borrarlos
>> y
>> > > dejar solo 1?? Ej:
>> > > carlos
>> > > carlos
>> > > julian
>> > > julian
>> > >
>> > > Debe quedar:
>> > > carlos
>> > > julian
>> > >
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#10 Maxi
30/12/2004 - 22:12 | Informe spam
No problem!! todos nos equivocamos che :-)

Ahora si, en este news vamos a implementar que por cada error, el culpable
debe pagar una ronda de cervezas (aunque sean virtuales) a todos los amigos
:-)

Felicidades


Salu2
Maxi


"news.microsoft.com" escribió en el mensaje
news:%
Disculpenme, lo razone mal

simplemente pense en eliminar el complemento del resulset que me recupera
el
select distinct, pero no lo probe

un abrazo
Roberto


"Maxi" escribió en el mensaje
news:%
Hola y con el permiso de Carlos ;)

Ese select no deja afuera los duplicados, solo muestra uno de cada uno,


pero
si tienes esto

Datos
A
A
B

dara como resultado
A
B

con lo cual el id A sigue estando del otro lado, me explico? veamos sino


un
ejemplo mas clarificador:

==>>
create table #pepe (dato varchar(100))
go

insert into #pepe values ('a')
insert into #pepe values ('a')
insert into #pepe values ('b')
insert into #pepe values ('c')
insert into #pepe values ('d')

select * from #pepe where dato not in (select distinct(dato) from #pepe)
go

delete from #pepe
where dato not in (select distinct(dato) from #pepe)

>>
Fijate que no borra ningun duplicado.

Si queres borrar duplicados podrias aplicar este metodo (entre otros
tanto
;)

http://www.databasejournal.com/feat...hp/1438651

Un abrazo


Salu2
Maxi


"news.microsoft.com" escribió en el mensaje
news:
> Por que lo decis?
>
> el select distinct deja afuera los duplicados, y el delete los borra,
> explicate un poco mejor por favor.
>
> un abrazo
> roberto
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el
> mensaje
> news:
>> Miguel, me parece que con esa sentencia no se encuentran los
> resultados
>> que Carlos espera...
>>
>>
>> Un saludo
>>
>> -
>> "Sólo sé que no sé nada. " (Sócrates)
>>
>> "news.microsoft.com" escribió en el mensaje
>> news:uiLKM$
>> > Yo no la complicaria y haria algo como:
>> >
>> > delete
>> > from tabla
>> > where nombre not in (select disctint nombre from tabla)
>> >
>> > Alvarez Arigos Roberto Miguel
>> > Analista Superior de Sistemas
>> >
>> > "Carlos" escribió en el mensaje
>> > news:
>> > > Cordial saludo
>> > >
>> > > En una tabla tengo varios registros repetidos, como hago para
> borrarlos
>> y
>> > > dejar solo 1?? Ej:
>> > > carlos
>> > > carlos
>> > > julian
>> > > julian
>> > >
>> > > Debe quedar:
>> > > carlos
>> > > julian
>> > >
>> >
>> >
>>
>>
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida