Listado completo de tutoriales

28 - Otros operadores relacionales (in)


Se utiliza "in" para averiguar si el valor de un campo está incluido en una lista de valores especificada.

En la siguiente sentencia usamos "in" para averiguar si el valor del campo autor está incluido en la lista de valores especificada (en este caso, 2 cadenas).

Hasta ahora, para recuperar los libros cuyo autor sea 'Paenza' o 'Borges' usábamos 2 condiciones:

 select * from libros
  where autor='Borges' or autor='Paenza';

Podemos usar "in" y simplificar la consulta:

 select * from libros
  where autor in('Borges','Paenza');

Para recuperar los libros cuyo autor no sea 'Paenza' ni 'Borges' usábamos:

 select * from libros
  where autor<>'Borges' and
  autor<>'Paenza';

También podemos usar "in" anteponiendo "not":

 select * from libros
  where autor not in ('Borges','Paenza');

Empleando "in" averiguamos si el valor del campo está incluido en la lista de valores especificada; con "not" antecediendo la condición, invertimos el resultado, es decir, recuperamos los valores que no se encuentran (coinciden) con la lista de valores.

Los valores "null" no se consideran.

Recuerde: siempre que sea posible, emplee condiciones de búsqueda positivas ("in"), evite las negativas ("not in") porque con ellas se evalúan todos los registros y esto hace más lenta la recuperación de los datos.

Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 drop table if exists libros;
 
 create table libros(
  codigo serial,
  titulo varchar(40) not null,
  autor varchar(20),
  editorial varchar(20),
  precio decimal(6,2),
  primary key(codigo)
 );

 insert into libros(titulo,autor,editorial,precio)
  values('El aleph','Borges','Emece',15.90);
 insert into libros(titulo,autor,editorial,precio)
  values('Cervantes y el quijote','Borges','Paidos',null);
 insert into libros(titulo,autor,editorial,precio)
  values('Alicia en el pais de las maravillas','Lewis Carroll',null,19.90);
 insert into libros(titulo,autor,editorial,precio)
  values('Matematica estas ahi','Paenza','Siglo XXI',15);
 insert into libros (titulo,precio)
  values('Antología poética',32);
 insert into libros (titulo,autor,precio)
  values('Martin Fierro','Jose Hernandez',40);
 insert into libros (titulo,autor,precio)
  values('Aprenda PHP','Mario Molina',56.50);

 -- Recuperamos los libros cuyo autor es "Paenza" o "Borges":
 select * from libros
  where autor in('Borges','Paenza');

 -- Recuperamos los libros cuyo autor NO es "Paenza" ni "Borges":
 select * from libros
  where autor not in ('Borges','Paenza');

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin in


Retornar