SQL-Unterabfragen

Hinweis: Wir möchten Ihnen die aktuellsten Hilfeinhalte so schnell wie möglich in Ihrer eigenen Sprache bereitstellen. Diese Seite wurde automatisiert übersetzt und kann Grammatikfehler oder Ungenauigkeiten enthalten. Unser Ziel ist es, Ihnen hilfreiche Inhalte bereitzustellen. Teilen Sie uns bitte über den Link am unteren Rand dieser Seite mit, ob die Informationen für Sie hilfreich sind. Hier finden Sie den englischen Artikel als Referenz.

Eine Unterabfrage ist eine SELECT-Anweisung in eine SELECT-Anweisung, SELECT geschachtelt... IN EINFÜGEN... INTO, löschen oder UPDATE-Anweisung oder in einer anderen Unterabfrage.

Syntax

Sie können drei Formen der Syntax zum Erstellen einer Unterabfrage verwenden:

Vergleich [ALLE | ALLE | Einige] (SQL-Anweisung)

Ausdruck [NOT] IN (SQL-Anweisung)

[NOT] EXISTS (SQL-Anweisung)

Eine Unterabfrage besteht aus folgenden Teilen:

Teil

Beschreibung

Vergleich

Eine Ausdruck und einen Vergleichsoperator aus, der den Ausdruck mit den Ergebnissen der Unterabfrage vergleicht.

Ausdruck

Ein Ausdruck, der für das Resultset der Unterabfrage gesucht wird.

SQL-Anweisung

Eine SELECT-Anweisung, das gleiche Format und die Regeln wie jede andere SELECT-Anweisung folgen. Es muss in Klammern eingeschlossen werden.


Hinweise

Sie können eine Unterabfrage anstelle eines Ausdrucks in der Feldliste einer SELECT-Anweisung oder in einer WHERE oder HAVING-Klausel verwenden. In einer Unterabfrage verwenden Sie eine SELECT-Anweisung um zu bieten eine Reihe von einem oder mehreren bestimmten Werten für in die WHERE oder HAVING-Klausel ausgewertet werden soll.

Verwenden Sie die Prädikate ANY oder SOME, um Datensätze in der Abfrage Hauptfenster abzurufen, die den Vergleich mit in der Unterabfrage abgerufenen Datensätze erfüllen. Im folgende Beispiel gibt alle Produkte, deren Einzelpreis eines beliebigen Produkts mit einem Rabatt von mindestens 25 % verkauft größer ist:

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

Verwenden Sie alle Prädikat, um nur die Datensätze in der Abfrage Hauptfenster abzurufen, die den Vergleich mit allen in der Unterabfrage abgerufenen Datensätze erfüllen. Wenn Sie sich für alle im vorherigen Beispiel geändert, würde die Abfrage nur die Artikel zurück, deren Einzelpreis aller Produkte, die mit einem Rabatt von mindestens 25 % verkauft größer ist. Dies ist viel eingeschränkter.

Verwenden Sie das Prädikat, um nur die Datensätze in der Abfrage Hauptfenster abzurufen, für die einige Datensatz in der Unterabfrage einen identischen Wert enthält. Im folgende 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);

NOT IN können Sie dagegen nur die Datensätze in der Abfrage Hauptfenster abzurufen, für die kein Datensatz in der Unterabfrage einen identischen Wert enthält.

Verwenden Sie das EXISTS-Prädikat (mit dem optional NOT reservierte Wort) in wahr/falsch-vergleichen, um festzustellen, 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;

Im vorherigen Beispiel ist die AS Reserviertes Wort 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.



Ihre Office-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.

×