Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Sebastián VillalbaDate: 2006-09-23 00:16:27
Subject: Re: borrar registros repetidos
Previous:From: Juan MartínezDate: 2006-09-22 22:57:01
Subject: Re: bachup de datos

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group