Warum funktioniert das Folgende nicht?
SELECT name FROM (SELECT name FROM agentinformation)
Ich denke, mein Verständnis von SQL ist falsch, weil ich gedacht hätte, dass dies dasselbe zurückgeben würde wie
SELECT name FROM agentinformation
Erstellt die innere select-Anweisung nicht eine Ergebnismenge, die die äußere SELECT-Anweisung dann abfragt?
where
Klausel für die äußere Abfrage gehen?select
ohne den Alias.Die Antwort von Joe Stefanelli ist bereits richtig.
Wir müssen einen Alias für die Unterabfrage erstellen, da eine Abfrage ein Tabellenobjekt benötigt, das wir erhalten, wenn wir einen Alias für die Unterabfrage erstellen. Konzeptionell werden die Ergebnisse der Unterabfrage in die äußere Abfrage eingesetzt. Da wir in der äußeren Abfrage ein Tabellenobjekt benötigen, müssen wir einen Alias für die innere Abfrage erstellen.
Anweisungen, die eine Unterabfrage enthalten, haben normalerweise eine der folgenden Formen:
Suchen Sie nach weiteren Unterabfrageregeln und Unterabfragetypen .
Weitere Beispiele für verschachtelte Unterabfragen.
IN / NOT IN - Dieser Operator nimmt die Ausgabe der inneren Abfrage nach Ausführung der inneren Abfrage, die null oder mehr Werte haben kann, und sendet sie an die äußere Abfrage. Die äußere Abfrage ruft dann alle übereinstimmenden [IN-Operator] oder nicht übereinstimmenden [NOT IN-Operator] Zeilen ab.
ANY - [> Der Operator ANY oder ANY nimmt die Liste der von der inneren Abfrage erzeugten Werte und ruft alle Werte ab, die größer als der Mindestwert der Liste sind. Das
Beispiel:> ANY (100.200.300), der Operator ANY ruft alle Werte ab, die größer als 100 sind.
Beispiel:> ALL (100.200.300), der ALL-Operator ruft alle Werte ab, die größer als 300 sind.
quelle