Resumen: en este tutorial, aprenderá a utilizar el operador de PostgreSQL EXISTS para comprobar la existencia de filas en una subconsulta.

Introducción al operador EXISTS de PostgreSQL

El operador EXISTS es un operador booleano que comprueba la existencia de filas en una subconsulta.

Lo siguiente ilustra la sintaxis del operador EXISTS:

EXISTS (subquery)

El EXISTS acepta un argumento que es una subconsulta.

Si la subconsulta devuelve al menos una fila, el resultado de EXISTS es verdadero. En caso de que la subconsulta no devuelva ninguna fila, el resultado de EXISTS es falso.

El operador EXISTS se suele utilizar con la subconsulta correlativa.

El resultado del operador EXISTS depende de si alguna fila devuelta por la subconsulta, y no del contenido de la fila. Por lo tanto, las columnas que aparecen en la cláusula SELECT de la subconsulta no son importantes.

Por esta razón, la convención de codificación común es escribir EXISTS de la siguiente forma:

Nota que si la subconsulta devuelve NULL, el resultado de EXISTS es verdadero.

Ejemplos de EXISTS en PostgreSQL

Utilizaremos las siguientes tablas customery payment de la base de datos de ejemplo para la demostración:

tablas de clientes y de pagos

A) Encuentra los clientes que tienen al menos un pago cuyo importe es superior a 11.

La siguiente sentencia devuelve los clientes que han pagado al menos un alquiler con un importe superior a 11:

SELECT first_name, last_nameFROM customer cWHERE EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

La consulta devuelve el siguiente resultado:

Ejemplo PostgreSQL EXISTS

En este ejemplo, para cada cliente de la tabla customer, la subconsulta comprueba la tabla payment para encontrar si ese cliente realizó al menos un pago (p.customer_id = c.customer_id) y el importe es superior a 11€. ( amount > 11)

B) Ejemplo NOT EXISTS

El operador NOT niega el resultado del operador EXISTS. El NOT EXISTS es opuesto al EXISTS. Significa que si la subconsulta no devuelve ninguna fila, el NOT EXISTS devuelve true. Si la subconsulta devuelve una o más filas, el NOT EXISTS devuelve false.

El siguiente ejemplo devuelve los clientes que no han realizado ningún pago que sea mayor de 11.

SELECT first_name, last_nameFROM customer cWHERE NOT EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

Aquí está la salida:

Ejemplo de NOT EXISTS de PostgreSQL

C) EXISTS y NULL

Si la subconsulta devuelve NULLEXISTS devuelve true. Vea el siguiente ejemplo:

SELECTfirst_name,last_nameFROMcustomerWHEREEXISTS( SELECT NULL )ORDER BYfirst_name,last_name;
Code language: SQL (Structured Query Language) (sql)

En este ejemplo, la subconsulta devolvió NULL, por lo tanto, la consulta devolvió todas las filas de la tabla customer.

Ejemplo de PostgreSQL EXIST con NULL

En este tutorial, se ha aprendido a utilizar la EXISTS de PostgreSQL para comprobar la existencia de filas en la subconsulta.

  • ¿Ha sido útil este tutorial?
  • SíNo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *