Des instructions SELECT supplémentaires peuvent être imbriquées dans une instruction SQL SELECT, dans la clause WHERE. Chaque nouvelle instruction SELECT lance une sous-requête.
Une sous-requête peut alors, à son tour, inclure une autre sous-requête dont le résultat est remplacé par la clause WHERE de la sous-requête d'origine. De plus, plusieurs conditions de recherche d'une clause WHERE peuvent inclure des sous-requêtes. La sous-requête peut faire référence à des tables et à des colonnes différentes de celles qu'utilise la requête principale.
L'instruction suivante sélectionne, dans la table ORG, la région et la ville de l'employé correspondant à l'ID 280 dans la table STAFF :
SELECT DIVISION, LOCATION FROM ORG WHERE DEPTNUMB = (SELECT DEPT FROM STAFF WHERE ID = 280)
Quand il traite une instruction, DB2 commence par déterminer le résultat de la sous-requête. Le résultat de cette instruction est 66, l'employé correspondant à l'ID 280 se trouvant dans le service 66. Ensuite, pour obtenir le résultat final, il prend dans la table ORG la ligne dont la colonne DEPTNUMB a la valeur 66. Voici le résultat obtenu :
DIVISION LOCATION ---------- ------------- Western San Francisco
Si vous utilisez une sous-requête, le gestionnaire de bases de données l'évalue et remplace directement la valeur résultant de la sous-requête dans la clause WHERE.
Pour plus de détails sur les sous-requêtes, consultez la section Sous-requêtes corrélées.