Règles des sous-requêtes
Une sous-requête est soumise aux restrictions suivantes :
La liste de sélection d'une sous-requête introduite par un opérateur de comparaison ne peut contenir qu'une seule expression ou qu'un seul nom de colonne (sauf lorsque EXISTS et IN opèrent respectivement sur SELECT * ou sur une liste).
Si la clause WHERE d'une requête externe comprend un nom de colonne, ce dernier doit pouvoir être joint à la colonne spécifiée dans la liste de sélection de la sous-requête.
Les types de données ntext, text et image ne peuvent pas être utilisés dans la liste de sélection des sous-requêtes.
Puisqu'elles doivent retourner une seule valeur, les sous-requêtes introduites par un opérateur de comparaison non modifié (non suivi des mots clés ANY ou ALL) ne peuvent pas contenir les clauses GROUP BY et HAVING.
Le mot clé DISTINCT ne peut être utilisé avec les sous-requêtes qui contiennent une clause GROUP BY.
Les clauses COMPUTE et INTO ne peuvent pas être spécifiées.
ORDER BY peut être spécifiée uniquement lorsque TOP l'est aussi.
Une vue créée à l'aide d'une sous-requête ne peut pas être mise à jour.
Par convention, la liste de sélection d'une sous-requête introduite par EXISTS est dotée d'un astérisque (*) au lieu d'un nom de colonne unique. Les règles à appliquer à une sous-requête introduite par EXISTS sont identiques à celles d'une liste de sélection standard. En effet, une sous-requête introduite par EXISTS crée un test d'existence et retourne les valeurs TRUE ou FALSE au lieu des données.