Pourquoi les suivants ne fonctionnent pas?
SELECT name FROM (SELECT name FROM agentinformation)
Je suppose que ma compréhension de SQL est fausse, car j’aurais pensé que cela retournerait la même chose que
SELECT name FROM agentinformation
L'instruction de sélection interne ne crée-t-elle pas un ensemble de résultats que l'instruction SELECT externe interroge ensuite?
Vous devez aliaser la sous-requête.
SELECT name FROM (SELECT name FROM agentinformation) a
ou pour être plus explicite
SELECT a.name FROM (SELECT name FROM agentinformation) a
Réponse fourni par Joe Stefanelli est déjà correct.
SELECT name FROM (SELECT name FROM agentinformation) as a
Nous devons créer un alias de sous-requête car la requête a besoin d'un objet table que nous obtiendrons en créant un alias en sous-requête. Conceptuellement, les résultats de la sous-requête sont substitués dans la requête externe. Comme nous avons besoin d'un objet table dans une requête externe, nous devons créer un alias de requête interne.
Les instructions qui incluent une sous-requête prennent généralement l'un des formats suivants:
Recherchez d'autres règles de sous-requête et types de sous-requête .
Plus d'exemples de sous-requête imbriquée.
IN/NOT IN - Cet opérateur prélève la sortie de la requête interne après exécution de la requête interne (valeur pouvant être égale à zéro ou plusieurs valeurs) et l'envoie à la requête externe. La requête externe extrait ensuite toutes les lignes correspondantes [opérateur IN] ou non correspondantes [opérateur NOT IN].
TOUT - [> TOUT ou TOUT opérateur prend la liste des valeurs générées par la requête interne et extrait toutes les valeurs supérieures à la valeur minimale de la liste. le
par exemple. > ANY (100,200,300), l'opérateur ANY récupère toutes les valeurs supérieures à 100.
par exemple. > ALL (100,200,300), l'opérateur ALL récupérera toutes les valeurs supérieures à 300.