From: | "Javier Aquino H(dot)" <JAquino(at)LexusEditores(dot)com> |
---|---|
To: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>, "Mario Gonzalez \( mario__ \)" <gonzalemario(at)gmail(dot)com>, Postgres Español <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: borrar registros repetidos |
Date: | 2006-09-23 00:20:56 |
Message-ID: | 04ab01c6dea6$237cd9c0$0a010a0a@javier |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Mmmmmmmmmmmmmmmmmmm
La verdad discrepo contigo con esa sentencia SQL por varios motivos pero lo
primordial es:
- El alias p2 no está definido en ningun lugar de la sentencia ( solo para
comenzar )
- Si el select interno devuelve el nombre 'Juan Perez' entonces la
sentencia delete externa borraría a todos los 'Juan Perez' y lo que se
quiere es que borre todos menos 1.
Slds,
Javier.
----- Original Message -----
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." <JAquino(at)lexuseditores(dot)com>; "Postgres Español"
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, September 22, 2006 6:55 PM
Subject: Re: [pgsql-es-ayuda] borrar registros repetidos
> 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
> -------------------------------------------
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envíe "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>
From | Date | Subject | |
---|---|---|---|
Next Message | Sebastián Villalba | 2006-09-23 00:35:46 | Re: borrar registros repetidos |
Previous Message | Sebastián Villalba | 2006-09-23 00:16:27 | Re: borrar registros repetidos |