From: | "Milton Galo Patricio" <minoztro(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: borrar registros repetidos |
Date: | 2006-09-23 17:35:12 |
Message-ID: | 172699c50609231035j6034f0een89ce5e23cc65a5bd@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | L.S.C. Zorobabel Vega Díaz | 2006-09-23 18:55:28 | Re: Primer query lento, los demas rapidos |
Previous Message | Jaime Casanova | 2006-09-23 16:54:19 | Re: Primer query lento, los demas rapidos |