Re: borrar registros repetidos

From: "Javier Aquino H(dot)" <JAquino(at)LexusEditores(dot)com>
To: Postgres Español <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: borrar registros repetidos
Date: 2006-09-23 01:25:01
Message-ID: 050f01c6deaf$182e2c00$0a010a0a@javier
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Vaya ... cada día se aprende algo nuevo.

Gracias.

Javier.

----- Original Message -----
From: "Sebastián Villalba" <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>
To: "Javier Aquino H." <JAquino(at)lexuseditores(dot)com>; "Mario Gonzalez (
mario__ )" <gonzalemario(at)gmail(dot)com>; "Postgres Español "
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, September 22, 2006 7:35 PM
Subject: Re: [pgsql-es-ayuda] borrar registros repetidos

> Hola Javier...
>
> On Fri, 22 Sep 2006 19:20:56 -0500, Javier Aquino H. wrote
>> 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 )
>
> Efectivamente. Fué un error mío que ya lo corregí
>
>> - 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.
>
> Eso lo hace. Fijate que borraría todos los 'Juan Perez' que tengan id
> mayor al
> que encuentra primero. Aquí te mando la verificación:
>
>
> ---------------------
> seba=# CREATE TABLE persona (id serial primary key, nombre varchar(50));
> NOTICE: CREATE TABLE creará una secuencia implícita «persona_id_seq» para
> la
> columna serial «persona.id»
> NOTICE: CREATE TABLE / PRIMARY KEY creará el índice implícito
> «persona_pkey»
> para la tabla «persona»
> CREATE TABLE
> seba=# INSERT INTO persona(nombre) VALUES('seba');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('juan');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('pepe');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('seba');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('seba');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('beto');
> INSERT 0 1
> seba=# INSERT INTO persona(nombre) VALUES('seba');
> INSERT 0 1
> seba=# SELECT * FROM persona;
> id | nombre
> ----+--------
> 1 | seba
> 2 | juan
> 3 | pepe
> 4 | seba
> 5 | seba
> 6 | beto
> 7 | seba
> (7 filas)
>
> seba=# DELETE FROM persona WHERE nombre IN (SELECT p1.nombre FROM persona
> p1
> WHERE persona.id > p1.id);
> DELETE 3
> seba=# SELECT * FROM persona;
> id | nombre
> ----+--------
> 1 | seba
> 2 | juan
> 3 | pepe
> 6 | beto
> (4 filas)
>
> seba=#
> ---------------------
>
> Saludos...
>
> -
> -------------------------------------------
> Sebastián Villalba
> sebastian(at)fcm(dot)unc(dot)edu(dot)ar
> -------------------------------------------
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message L.S.C. Zorobabel Vega Díaz 2006-09-23 16:12:23 Primer query lento, los demas rapidos
Previous Message Sebastián Villalba 2006-09-23 00:35:46 Re: borrar registros repetidos