Requête PostgreSQL OÙ EXISTE

PostgreSQL: En utilisant la clause where EXISTS

Lorsqu’une requête SQL est utilisée dans une autre requête SQL, elle est appelée sous-requête. La requête compliquée peut être écrite facilement en divisant une requête volumineuse en plusieurs sous-requêtes. La clause EXISTS est utilisée avec une sous-requête dans une instruction SQL. La sortie de EXISTS dépend du nombre d’enregistrements renvoyés par la sous-requête mais ne dépend pas des valeurs des enregistrements. Le résultat de EXISTS sera true si la sous-requête associée renvoie au moins une ligne. La façon dont vous pouvez utiliser la clause EXISTS et NOT EXISTS dans les instructions select, insert, update et delete est présentée dans ce tutoriel à l’aide de différents exemples.

Syntaxe de clause EXISTE:

SÉLECTIONNEZ col1, col2, col3…..
À PARTIR DU nom_table 1
OÙ EXISTE (SÉLECTIONNEZ 1
À PARTIR DU nom_table 2
OÙ col1 = nom_table 1.col1);

Créez trois tables nommées société, articles et clients et insérez des données. Exécutez la requête select suivante pour afficher le contenu de ces tables.

SÉLECTIONNER * de l’entreprise;
SÉLECTIONNER* des articles;
SÉLECTIONNER* parmi les clients;

Exemple 1 : Utilisation de la clause EXISTS dans SELECT query

(a) EXISTS

La requête suivante récupérera les enregistrements de la table des éléments en fonction de la table de l’entreprise. La sous-requête recherche tous les enregistrements de la table company où company_id de la table company est égal à company_id de la table items et le champ value of phone n’est pas vide. Il y a un enregistrement dans la table de l’entreprise qui n’a pas de numéro de téléphone et cet enregistrement sera omis de la sortie.

SÉLECTIONNEZ item_id, nom, quantité
PARMI les articles
OÙ EXISTE (SÉLECTIONNEZ 1
DE LA société
OÙ les articles.company_id = entreprise.company_id et société.téléphone<> »);

Sortie:

L’enregistrement de LG n’a pas d’entrée téléphonique dans le tableau de l’entreprise. Il n’est donc pas apparu dans la sortie.

( b) NOT EXISTS

La clause NOT EXISTS est opposée à la clause EXISTS. La requête suivante récupérera ces enregistrements de la table des éléments lorsque la sous-requête renvoie false.

SÉLECTIONNEZ item_id, nom, quantité
PARMI les articles
OÙ N’EXISTE PAS (SÉLECTIONNEZ 1
DE LA société
OÙ les articles.company_id = entreprise.company_id et société.website_url est NULL);

Sortie :

Il n’y a pas d’enregistrement dans la table de l’entreprise où website_url est NULL. Ainsi, la sortie de la sous-requête est fausse pour tous les enregistrements et tous les enregistrements de la table des éléments sont récupérés.

Exemple – 2: Utilisation de la clause EXISTS dans la requête INSERT

Selon la requête insert suivante, les données seront insérées dans la table items lorsque company_id des tables company et customers sont égales.

INSÉRER DANS LES éléments
(company_id)
SÉLECTIONNEZ company_id
PARMI LES clients
OÙ EXISTE (Sélectionnez 1
PARMI LA société, les clients
OÙ SONT les clients.company_id = entreprise.id de l’entreprise_);

Sortie:

Il y a trois entrées pour company_id dans la table des clients avec les valeurs sont 1 et 2. Ainsi, la sous-requête retournera true trois fois et trois enregistrements seront insérés.

Exécutez la requête select pour vérifier le contenu de la table des éléments.

Exemple 3 : Utilisation de la clause EXISTS dans la requête de MISE à JOUR

La requête suivante mettra à jour les enregistrements de la table des éléments où company_id vaut 1 et la sous-requête renvoie true.

METTRE À JOUR les éléments
SET name=’Nokia’
OÙ company_id = 1 et EXISTE (SÉLECTIONNEZ 1
PARMI les éléments
OÙ name=’Non attribué’);

Sortie:

Ici, la sous-requête retournera true trois fois et company_id vaut 1 pour trois enregistrements. Trois enregistrements seront mis à jour après l’exécution de la requête de mise à jour.

Exécutez la requête select pour vérifier le contenu de la table des éléments.

Exemple -4 : En utilisant la clause EXISTS dans DELETE query

, la requête suivante supprimera les enregistrements de la table des éléments où company_id vaut 1 et la sous-requête renvoie true.

SUPPRIMER DES éléments
OÙ company_id = 1 et EXISTE (SÉLECTIONNEZ 1
DES éléments
OÙ name = ‘Non attribué’);

Sortie:

Il y a trois enregistrements avec la valeur 1 de company_id et un enregistrement a la valeur de nom ‘Not Assign’. Ainsi, la condition sera vraie trois fois et supprimera trois enregistrements de la table des éléments.

Exécutez la requête select pour vérifier le contenu de la table des éléments.

J’espère que vous avez une idée claire de l’utilisation de la clause EXISTS dans la requête SQL après avoir lu ce tutoriel.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.