From: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> |
---|---|
To: | "Mario Gonzalez ( mario__ )" <gonzalemario(at)gmail(dot)com>, "Javier Aquino H(dot)" <JAquino(at)lexuseditores(dot)com>, Postgres Español <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: borrar registros repetidos |
Date: | 2006-09-22 23:55:12 |
Message-ID: | 20060922232406.M76493@fcm.unc.edu.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola...
On Fri, 22 Sep 2006 17:00:42 -0400, Mario Gonzalez ( mario__ ) wrote
> On 22/09/06, Javier Aquino H. <JAquino(at)lexuseditores(dot)com> wrote:
> > Solo una consulta ..............
> >
> > CREATE TEMP TABLE personas_tmp AS SELECT distinct on (nombre)
> > id,nombre from personas;
> >
> > Digamos que hay 10 registros con el campo nombre "Juan Perez" .... ¿Cual de
> > los 10 id devuelve ?
> >
> > El primero que encuentre ? ... el menor?, el mayor ?
> >
>
> no hay forma de saber cual es el menor o el mayor a menos que se
> especifique explicitamente un ORDER BY.
Evidentemente agarré tarde el hilo, pero ví que nadie dió una solución muy
fácil, en SQL puro y sin necesidad de tablas temporales. Sería algo como:
DELETE FROM persona WHERE nombre IN (SELECT p1.nombre FROM persona p1 WHERE
persona.id > p2.id);
Eso borrará todas las igualdades dejando solamente el primero que se encontró.
Para dejar el último basta con cambiar el sentido de ">" dentro de la
subconsulta. Saludos...
-
-------------------------------------------
Sebastián Villalba
sebastian(at)fcm(dot)unc(dot)edu(dot)ar
-------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Sebastián Villalba | 2006-09-23 00:16:27 | Re: borrar registros repetidos |
Previous Message | Juan Martínez | 2006-09-22 22:57:01 | Re: bachup de datos |