SQL-Unterabfragen

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Bei einer Unterabfrage handelt es sich um eine SELECT-Anweisung, die innerhalb einer SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- oder UPDATE-Anweisung oder innerhalb einer anderen Unterabfrage geschachtelt ist.

Syntax

Zum Erstellen einer Unterabfrage können drei verschiedene Syntaxvarianten verwendet werden:

Vergleich [ANY | ALL | SOME] (SQL-Anweisung)

Ausdruck [NOT] IN (SQL-Anweisung)

[NOT] EXISTS (SQL-Anweisung)

Eine Unterabfrage besteht aus den folgenden Teilen:

Teil

Beschreibung

Vergleich

Ein Ausdruck und ein Vergleichsoperator, der den Ausdruck mit den Ergebnissen der Unterabfrage vergleicht.

Ausdruck

Ein Ausdruck, anhand dessen das Resultset der Unterabfrage durchsucht wird.

SQL-Anweisung

Eine SELECT-Anweisung, für die die gleichen Formatierungsregeln wie für alle anderen SELECT-Anweisungen gelten. Die Anweisung muss in Klammern eingeschlossen werden.


Hinweise

Anstelle eines Ausdrucks können Sie eine Unterabfrage in der Feldliste einer SELECT-Anweisung oder in einer WHERE- oder HAVING-Klausel verwenden. In einer Unterabfrage geben Sie mit einer SELECT-Anweisung bestimmte Werte zurück, um sie in der WHERE- oder HAVING-Klausel auszuwerten.

Rufen Sie mithilfe der ANY- oder SOME-Prädikate, die Synonyme darstellen, Datensätze in der Hauptabfrage ab, die den Vergleich mit einem in der Unterabfrage abgerufenen Datensatz erfüllen. Im folgenden Beispiel werden alle Artikel zurückgegeben, deren Einzelpreis höher ist als der Einzelpreis eines beliebigen Artikels, der mit einem Rabatt von mindestens 25 % verkauft wurde:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Rufen Sie mithilfe des ALL-Prädikats nur jene Datensätze in der Hauptabfrage ab, die den Vergleich mit allen in der Unterabfrage abgerufenen Datensätzen erfüllen. Wenn Sie im vorherigen Beispiel ALL statt ANY verwenden, würde die Abfrage nur jene Artikel zurückgeben, deren Einzelpreis höher als der Einzelpreis aller Produkte ist, die mit einem Rabatt von mindestens 25 % verkauft wurden. Dies ist wesentlich restriktiver.

Mit dem IN-Prädikat rufen Sie nur jene Datensätze in der Hauptabfrage ab, für die ein Datensatz in der Unterabfrage einen identischen Wert enthält. Im folgenden Beispiel werden alle Artikel mit einem Rabatt von mindestens 25 % zurückgegeben:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Mit dem NOT IN-Prädikat rufen Sie dagegen nur jene Datensätze in der Hauptabfrage ab, für die kein Datensatz in der Unterabfrage einen identischen Wert enthält.

Verwenden Sie das EXISTS-Prädikat (mit dem optionalen reservierten Wort NOT) in Wahr/Falsch-Vergleichen, um zu ermitteln, ob die Unterabfrage Datensätze zurückgibt.

Sie können auch Aliase für Tabellennamen in einer Unterabfrage verwenden, verweisen auf Tabellen in einer FROM-Klausel außerhalb der Unterabfrage aufgeführt. Im folgende Beispiel gibt die Namen der Mitarbeiter, dessen Gehälter gleich oder größer als die durchschnittliche Gehälter aller Mitarbeiter mit der gleichen Position sind. Die Tabelle Personal erhält den Alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

In diesem Beispiel ist das Reserviertes Wort AS optional.

Einige Unterabfragen sind in Kreuztabellenabfragen zulässig, insbesondere als Prädikate (in der WHERE-Klausel). Unterabfragen als Ausgaben (in der SELECT-Liste) sind in Kreuztabellenabfragen nicht zulässig.



Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Ihre Fähigkeiten erweitern
Schulung erkunden
Neue Funktionen als Erster erhalten
An Office Insider teilnehmen

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×