Re: borrar registros repetidos

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
-------------------------------------------

In response to

Responses

Browse pgsql-es-ayuda by date

  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