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 :

tables clients et paiements

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 :

PostgreSQL EXISTS exemple

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:

Exemple de NOT EXISTS PostgreSQL

C) EXISTS et NULL

Si la sous-requête renvoie NULLEXISTS renvoie true. Consultez l’exemple suivant :

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

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.

PostgreSQL EXIST avec exemple NULL

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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *