From: | WILLIAM PARRA <wilparra(at)yahoo(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: borrar registros repetidos |
Date: | 2006-09-22 21:10:25 |
Message-ID: | 20060922211025.38522.qmail@web56605.mail.re3.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
No se si esto responda al problema planteado, pero me he tomado un trabajito.... ilustrativo... espero sirva de algo
y si sirve, ojalá sea práctico
create table lugares_1
(
codigo_lugar numeric(10) not null primary key,
nombre_lugar varchar(70)
);
insert into lugares_1 values(1,'cucaita');
insert into lugares_1 values(2,'cucaita');
insert into lugares_1 values(3,'cucaita');
insert into lugares_1 values(4,'cucaita');
insert into lugares_1 values(5,'sora');
insert into lugares_1 values(6,'sora');
insert into lugares_1 values(7,'sora');
insert into lugares_1 values(8,'samaca');
insert into lugares_1 values(9,'samaca');
insert into lugares_1 values(10,'sachica');
-- En este script, sobral algunos datos repetidos, los cuales serian de los lugares cucaita, sora y samaca, pero hay que mantener por lo menos uno
delete from lugares_1 where codigo_lugar in (
select codigo_lugar from lugares_1 where nombre_lugar in
(
select nombre_lugar from lugares_1 group by nombre_lugar having count(*)>1
)
and codigo_lugar not in (
select min(codigo_lugar) from lugares_1
group by nombre_lugar
having count(*)>1
)
);
Si corres este script, este es el resultado en la tabla de lugares_1
select * from lugares_1;
1 cucaita
5 sora
8 samaca
10 sachica
Funciona para este ejemplo.... para una tabla con mas columnas precisaria de concatenar los campos para hacer el in....
No sé que piensen ustedes si sea demasiado pesado....
En fin...
Saludos,
William Parra Alba
UPTC - Tunja - Colombia
Patricio Cifuentes Ithal <pcifuentes(at)siigsa(dot)cl> escribió:
Me sirvio de mucho... muchas gracias a todos....!!!!!
--
Patricio Cifuentes Ithal
Ingeniero en Informática
Desarrollo Tecnológico
SIIGSA
(56-2) 204 60 22
----- Original Message -----
From: "Juan Martínez"
To: "Mario Gonzalez ( mario__ )" ; "lista postrges"
Sent: Friday, September 22, 2006 4:06 PM
Subject: Re: [pgsql-es-ayuda] borrar registros repetidos
> Mario Gonzalez ( mario__ ) escribió:
> > On 22/09/06, Juan Martínez wrote:
> >>
> >> [...]
> >> Hacerlo todo en un solo SQL statement lo veo dificil.
> >
> > No Juan, Si se puede hacer mediante SQL, en realidad es muy facil.
> > Patricio, esas preguntas dan gusto, lo digo de verdad :-)
>
> Ops. Toda la razon. Me encegueci tratando de hacerlo solo con DELETE FROM.
>
> Ciertamente tu solucion es mas rapida (aun que no sea un solo SQL
> statement)...
>
> > CREATE TEMP TABLE personas_tmp AS SELECT distinct on (nombre)
> > id,nombre from personas;
>
> mmm...
>
> SELECT DISTINCT ON (nombre) id, nombre
> INTO personas_tmp
> FROM personas
> ORDER BY nombre, id;
>
> > DELETE FROM personas where personas.id != personas_tmp.id;
>
> DELETE FROM personas
> WHERE id NOT IN (SELECT id FROM personas_tmp);
>
> :-)
>
> Saludos
>
> --
> Juan Martinez G.
> Departamento de Informatica
> Universidad Miguel de Cervantes
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>
> --
> Este mensaje ha sido analizado por MailScanner
> en busca de virus y otros contenidos peligrosos,
> y se considera que est limpio.
>
> www.siigsa.cl
--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
---------------------------(fin del mensaje)---------------------------
TIP 9: el optimizador ignorará el uso de recorridos de índice si los
tipos de datos de las columnas no coinciden
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Javier Aquino H. | 2006-09-22 21:15:38 | Re: borrar registros repetidos |
Previous Message | Mario Gonzalez ( mario__ ) | 2006-09-22 21:00:42 | Re: borrar registros repetidos |