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.