it-swarm.com.de

Geschachtelte select-Anweisung in SQL Server

Warum funktioniert das Folgende nicht?

SELECT name FROM (SELECT name FROM agentinformation)

Ich vermute, mein Verständnis von SQL ist falsch, weil ich gedacht hätte, dass dies das Gleiche ergibt wie

SELECT name FROM agentinformation

Erzeugt die innere SELECT-Anweisung keine Ergebnismenge, die die äußere SELECT-Anweisung dann abfragt?

350
Brennan Vincent

Sie müssen die Unterabfrage alias.

SELECT name FROM (SELECT name FROM agentinformation) a  

oder expliziter zu sein

SELECT a.name FROM (SELECT name FROM agentinformation) a  
608
Joe Stefanelli

Answer Angaben von Joe Stefanelli sind bereits korrekt.

SELECT name FROM (SELECT name FROM agentinformation) as a  

Wir müssen einen Alias ​​für die Unterabfrage erstellen, da die Abfrage ein Tabellenobjekt benötigt, das wir erhalten, wenn wir einen Alias ​​für die Unterabfrage erstellen. Konzeptionell werden die Unterabfrageergebnisse in die äußere Abfrage eingesetzt. Da wir in der äußeren Abfrage ein Tabellenobjekt benötigen, müssen wir einen Alias ​​der inneren Abfrage erstellen.

Anweisungen, die eine Unterabfrage enthalten, haben normalerweise eines der folgenden Formate:

  • WHERE Ausdruck [NOT] IN (Unterabfrage)
  • WHERE Ausdruck Vergleichsoperator [ANY | ALL] (Unterabfrage)
  • WO [NICHT] EXISTIERT (Unterabfrage)

Überprüfen Sie, ob weitere nterabfrageregeln und nterabfragetypen vorhanden sind.

Weitere Beispiele der verschachtelten Unterabfrage.

  1. IN/NOT IN - Dieser Operator nimmt die Ausgabe der inneren Abfrage nach Ausführung der inneren Abfrage, die null oder mehr Werte enthalten 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.

  2. ANY - [> ANY oder ANY-Operator 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

z.B. > ANY (100.200.300): Der ANY-Operator ruft alle Werte ab, die größer als 100 sind.

  1. ALL - Der Operator [> ALL oder ALL nimmt die Liste der von der inneren Abfrage erzeugten Werte und ruft alle Werte ab, die größer als das Maximum der Liste sind. Das

z.B. > ALL (100.200.300): Der Operator ALL ruft alle Werte ab, die größer als 300 sind.

  1. EXISTS - Das Schlüsselwort EXISTS erzeugt einen Booleschen Wert [TRUE/FALSE]. Diese EXISTS prüft die Existenz der von der Unterabfrage zurückgegebenen Zeilen.
38
Somnath Muluk