PostgreSQL où il existe une requête

PostgreSQL où il existe une requête

PostgreSQL: Utilisation de la clause Where existe

Lorsqu'une requête SQL est utilisée dans une autre requête SQL, elle s'appelle une sous-requête. La requête compliquée peut être écrite facilement en divisant une grande requête en plusieurs sous-requêtes. La clause existant est utilisée avec une sous-requête dans une déclaration SQL. La sortie de l'existe 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 l'existence sera vrai si la sous-requête associée renvoie au moins une ligne. La façon dont vous pouvez utiliser existe et n'existe pas la clause dans certains, insérer, mettre à jour et supprimer les instructions sont affichées dans ce tutoriel en utilisant différents exemples.

Existe la syntaxe de la clause:

Sélectionnez COL1, COL2, COL3…
De table_name1
Où existe (sélectionnez 1
DEPUIS
table_name2
Où col1 = table_name1.COL1);

Créer trois tables nommées entreprise, articles et clients et insérer certaines données. Exécutez la requête de sélection suivante pour afficher le contenu de ces tables.

Sélectionner * dans la société;
Sélectionner * à partir des éléments;
Sélectionner * parmi les clients;

Exemple-1: Utilisation de la clause existant dans la requête sélectionnée

a) existe

La requête suivante récupérera des enregistrements à partir de articles table basée sur entreprise tableau. La sous-requête recherche tous les enregistrements de entreprise table où company_id de entreprise la table est égale à company_id de articles table et la valeur de téléphone Le champ n'est pas vide. Il y a un record dans entreprise table 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é
Des articles
Où existe (sélectionnez 1
De l'entreprise
Où les articles.company_id = entreprise.Company_id et entreprise.téléphone");

Sortir:

L'enregistrement de LG n'a pas d'entrée de téléphone dans la table de l'entreprise. Il n'est donc pas apparu dans la sortie.

(b) n'existe pas

Ne pas exister la clause est opposée à la clause. La requête suivante récupérera ces enregistrements à partir de articles table lorsque la sous-requête renvoie fausse.

Sélectionnez item_id, nom, quantité
Des articles
Où il n'y a pas (sélectionnez 1
De l'entreprise
Où les articles.company_id = entreprise.Company_id et entreprise.Sited_Url est nul);

Sortir:

Il n'y a pas d'enregistrement dans entreprise table où URL de site web est nul. 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 existant dans Insert Query

Selon la requête d'insertion suivante, les données seront insérées dans articles table quand company_id des deux entreprise et clients Les tables sont égales.

Insérer dans les articles
(Company_id)
Sélectionnez Company_id
Des clients
Où existe (sélectionnez 1
De l'entreprise, les clients
Où les clients.company_id = entreprise.company_id);

Sortir:

Il y a trois entrées pour company_id Dans les clients, les valeurs sont 1 et 2. Ainsi, la sous-requête reviendra vrai pour trois fois et trois records seront insérés.

Exécutez la requête SELECT pour vérifier la table du contenu des éléments.

Exemple-3: Utilisation de la clause existant dans la requête de mise à jour

La requête suivante mettra à jour les enregistrements de articles table où company_id est 1 et la sous-requête renvoie vrai.

Mettre à jour les éléments
Set name = "Nokia"
Où company_id = 1 et existe (sélectionnez 1
Des articles
Où name = "pas attribuer");

Sortir:

Ici, la sous-requête reviendra vrai pour trois fois et company_id est 1 pour trois records. 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 la table du contenu des éléments.

Exemple-4: Utilisation de la clause existant dans la requête de suppression

La requête suivante supprimera ces enregistrements de articles table où company_id est 1 et la sous-requête renvoie vrai.

Supprimer les articles
Où company_id = 1 et existe (sélectionnez 1
Des articles
Où name = "pas attribuer");

Sortir:

Il y a trois enregistrements avec la valeur 1 de company_id Et un enregistrement a une valeur de nom 'Pas affecter'. Ainsi, la condition sera vraie pour trois fois et supprimez trois enregistrements de articles tableau.

Exécutez la requête SELECT pour vérifier la table du contenu des éléments.

Hope, vous avez une idée claire d'utiliser la clause existant dans la requête SQL après avoir lu ce tutoriel.