From: | Leonel Nunez <lnunez(at)enelserver(dot)com> |
---|---|
To: | Pablo Braulio <brulics(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Delete de filas que no sean esta, ni esta, .... |
Date: | 2006-08-05 14:39:06 |
Message-ID: | 44D4AD8A.4080200@enelserver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Pablo Braulio wrote:
> Hola a todos.
>
> Para aquellos que todavía no estén disfrutando de sus vacaciones, como
> yo, agradecería ayuda con esta cuestión que no consigo solucionar.
Vacaciones ? que es eso ?
>
> Tengo una tabla con los siguientes datos:
>
> SELECT * from ficheros_recursos_programas;
> id | fichero | recurso
> ----+---------+---------
> 4 | 80 | 60
> 8 | 78 | 60
> 9 | 90 | 60
> 9 | 91 | 60
> 9 | 92 | 60
> (2 filas)
>
> El caso es que quisiera hacer un delete de datos siempre que no el
> campo fichero no fuera 80 y 78.
>
> A simple vista podría hacer esto:
>
> delete from ficheros_recursos_programas where fichero <> '80' and
> fichero <> '78';
>
> Pero esto no soluciona el problema, pues el condicional no siempre es
> el mismo. Quiero decir que en este caso es 80, 78, y en otros casos
> puede ser 80, 78, 90, 91, etc. Espero haberme explicado bien
>
> He probado con esto, pero no funciona:
>
> delete from ficheros_recursos_programas where fichero <> ('80', '78');
>
> ¿Alguien sabría decirme como se puede hacer esto?.
>
algo como asi :
leonel=> \d b;
Table "public.b"
Column | Type | Modifiers
--------+-------------------+-----------
a | character varying |
b | character varying |
id | integer |
leonel=> insert into b values ( '0123' , 'ttt3',3);
INSERT 0 1
leonel=> insert into b values ( '0123' , 'ttt2',2);
INSERT 0 1
leonel=> insert into b values ( '0123' , 'ttt1',1);
INSERT 0 1
leonel=> insert into b values ( '0123' , 'ttt4',4);
INSERT 0 1
leonel=> select * from b;
a | b | id
------+------+----
0123 | ttt3 | 3
0123 | ttt2 | 2
0123 | ttt1 | 1
0123 | ttt4 | 4
(4 rows)
leonel=> select * from b where id not in ( 1 , 2 );
a | b | id
------+------+----
0123 | ttt3 | 3
0123 | ttt4 | 4
(2 rows)
a lo que puedes agregar otra tabla con los identificadores a borrar :
leonel=> create table bb( id int );
CREATE TABLE
leonel=> insert into bb values ( 3 );
INSERT 0 1
leonel=> insert into bb values ( 4 );
INSERT 0 1
leonel=> select * from b where id not in ( select id from bb );
a | b | id
------+------+----
0123 | ttt2 | 2
0123 | ttt1 | 1
(2 rows)
Leonel
From | Date | Subject | |
---|---|---|---|
Next Message | Mario Gonzalez | 2006-08-05 18:17:06 | Re: Traduccion de documentacion fue:(Cursores) |
Previous Message | Pablo Braulio | 2006-08-05 13:59:36 | Re: Delete de filas que no sean esta, ni esta, .... |