Re: Delete de filas que no sean esta, ni esta, ....

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

In response to

Browse pgsql-es-ayuda by date

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