Résumé : dans ce tutoriel, vous apprendrez à utiliser l’opérateur PostgreSQL EXISTS pour tester l’existence de lignes dans une sous-requête.
Introduction à l’opérateur EXISTS de PostgreSQL
L’opérateur EXISTS est un opérateur booléen qui teste l’existence de lignes dans une sous-requête.
Les éléments suivants illustrent la syntaxe de l’opérateur EXISTS:
EXISTS (subquery)
Le EXISTS accepte un argument qui est une sous-requête.
Si la sous-requête renvoie au moins une ligne, le résultat de EXISTS est vrai. Dans le cas où la sous-requête ne renvoie aucun rang, le résultat de EXISTS est faux.
L’opérateur EXISTS est souvent utilisé avec la sous-requête corrélée.
Le résultat de l’opérateur EXISTS dépend de l’existence ou non d’une ligne retournée par la sous-requête, et non du contenu de la ligne. Par conséquent, les colonnes qui apparaissent sur la clause SELECT de la sous-requête ne sont pas importantes.
Pour cette raison, la convention de codage courante consiste à écrire EXISTS sous la forme suivante :
Notez que si la sous-requête renvoie NULL, le résultat de EXISTS est vrai.
Exemples de PostgreSQL EXISTS
Nous utiliserons les tables suivantes customeret payment de la base de données exemple pour la démonstration :

A) Trouvez les clients qui ont au moins un paiement dont le montant est supérieur à 11.
L’instruction suivante renvoie les clients qui ont payé au moins une location dont le montant est supérieur à 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 requête renvoie la sortie suivante :

Dans cet exemple, pour chaque client de la table customer, la sous-requête vérifie la table payment pour trouver si ce client a effectué au moins un paiement (p.customer_id = c.customer_id) et si le montant est supérieur à 11. ( amount > 11)
B) Exemple de NOT EXISTS
L’opérateur NOT annule le résultat de l’opérateur EXISTS. L’opérateur NOT EXISTS est opposé à EXISTS. Cela signifie que si la sous-requête ne renvoie aucune ligne, la NOT EXISTS renvoie true. Si la sous-requête renvoie une ou plusieurs lignes, la NOT EXISTS renvoie false.
L’exemple suivant renvoie les clients n’ont pas effectué de paiement supérieur à 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;
Voici la sortie:

C) EXISTS et NULL
Si la sous-requête renvoie NULLEXISTS renvoie true. Consultez l’exemple suivant :
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerWHEREEXISTS( SELECT NULL )ORDER BYfirst_name,last_name;
Dans cet exemple, la sous-requête a retourné NULL, par conséquent, la requête a retourné toutes les lignes de la table customer.

Dans ce tutoriel, vous avez appris à utiliser la EXISTS de PostgreSQL pour tester l’existence des lignes dans la sous-requête.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.