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