SQL EXISTS | |
Dans la section précédente, nous avons utilisé IN pour mettre en liaison la requête interne et la requête externe dans une instruction de sous-requête. L’utilisation de IN n’est pas la seule manière de procéder ; il est aussi possible d’utiliser plusieurs opérateurs tels que >, <, ou =. EXISTS est un opérateur spécial que nous verrons dans cette section. EXISTS teste simplement si la requête interne retourne une ligne. Si elle le fait, la requête externe peut s’exécuter. Sinon, la requête externe ne s’exécutera pas, et l’instruction SQL entière ne retournera aucun résultat. La syntaxe pour EXISTS est : SELECT "nom de colonne 1"
FROM "nom de table 1" WHERE EXISTS (SELECT * FROM "nom de table 2" WHERE "condition"); Notez qu’au lieu de l’étoile *, vous pouvez sélectionner une ou plusieurs colonnes dans la requête interne. L’effet sera identique. Utilisons les mêmes tables comme exemple : Table Store_Information
Table Geography
définissons la requête SQL suivante : SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS (SELECT * FROM Geography WHERE Region_Name = 'West'); Le résultat obtenu sera le suivant :
A première vue, cette opération peut paraître un peu confuse, car la sous-requête inclut la condition [Region_Name = 'West'], la requête n’a pas encore ajouté les magasins pour toutes les régions. Par une analyse plus approfondie, nous parvenons à la condition suivante : puisque la sous-requête retourne plus de 0 ligne, la condition EXISTS est vraie, et la condition placée au sein de la requête interne n’affecte pas le mode d’exécution de la requête externe.
Copyright © 2024 1keydata.com Tous droits réservés |