Re: borrar registros repetidos

From: Hensa <hensa22(at)yahoo(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: borrar registros repetidos
Date: 2006-09-24 01:51:51
Message-ID: 20060924015152.54573.qmail@web30809.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Puedes usar esta sentencia :

delete from tabla where (Campo1,campo2,campo3 ....) in
(select campo1,campo2,campo3..... from tabla group by campo1,campo2,campo3 ......
having count(*)>1
)

Milton Galo Patricio <minoztro(at)gmail(dot)com> escribió: hola:

es importante señalar que para que no siga ocurriendo que el nombre este repetido deberás crear alguna restricción a ese campo, como por ejemplo que el campo nombre sea unique, salu2!

2006/9/22, conrado(at)mapfre(dot)com(dot)ar <conrado(at)mapfre(dot)com(dot)ar>: Tambien prodria reducir a una sola sentencia:

delete
from personas
where coalesce(personas.id,0) <> ( select coalesce(min(x.id),0)
from personas x
where x.nombre = personas.nombre)

Saludos,
Conrado

> -----Mensaje original-----
> De: Mario Gonzalez ( mario__ ) [mailto: gonzalemario(at)gmail(dot)com]
> Enviado el: Viernes, 22 de Septiembre de 2006 04:51 p.m.
> Para: Juan Martínez
> CC: Patricio Cifuentes Ithal; pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] borrar registros repetidos
>
>
> On 22/09/06, Mario Gonzalez ( mario__ )
> <gonzalemario(at)gmail(dot)com> wrote:
> > On 22/09/06, Juan Martínez <jeugenio(at)umcervantes(dot)cl> wrote:
> > Alguna otra idea
> > >
> > > Te sugiero que uses la consola.
> > > Se me ocurre que puedes hacer un cursor ordenado por el
> campo nombre y
> > > hacer una funcion que los traspase a otra tabla solo la primera
> > > ocurrencia. Eso no es muy complicado.
> > >
> > > Hacerlo todo en un solo SQL statement lo veo dificil.
> > >
> >
> > No Juan, Si se puede hacer mediante SQL, en realidad es muy facil.
> > Patricio, esas preguntas dan gusto, lo digo de verdad :-)
> >
> > CREATE TEMP TABLE personas_tmp AS SELECT distinct on (nombre)
> > id,nombre from personas;
> >
> > DELETE FROM personas where personas.id != personas_tmp.id;
> >
> > INSERT INTO personas SELECT * from personas_tmp ;
> >
>
> Mis disculpas!! el DELETE ..... cambialo simplemente por
> DELETE FROM personas; por lo tanto
>
> CREATE TEMP TABLE personas_tmp AS SELECT distinct on (nombre)
> id,nombre from personas;
> DELETE FROM personas;
> INSERT INTO personas SELECT * from personas_tmp ;
>
> >
>
> --
> http://www.advogato.org/person/mgonzalez/
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

---------------------------(fin del mensaje)---------------------------
TIP 2: puedes desuscribirte de todas las listas simult�neamente
(env�e "unregister TuDirecci�nDeCorreo" a majordomo(at)postgresql(dot)org)

--
Milton Inostroza Aguilera

Henry

---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message LDC - Carmen Brando 2006-09-24 13:36:15 Sobre variable targetList en una estructura Query
Previous Message Hensa 2006-09-24 01:43:46 RE: error al listar los usuarios postgres