Regeln für Unterabfragen
Eine Unterabfrage unterliegt den folgenden Beschränkungen:
Die Auswahlliste einer mit einem Vergleichsoperator eingeleiteten Unterabfrage darf nur einen einzigen Ausdruck oder Spaltennamen einschließen (außer bei EXISTS und IN, die sich auf Anweisungen mit SELECT * bzw. auf eine Liste beziehen).
Wenn die WHERE-Klausel einer äußeren Abfrage einen Spaltennamen einschließt, muss sie mit der Spalte in der Auswahlliste der Unterabfrage verknüpfbar sein (kompatible Datentypen).
Die Datentypen ntext, text und image können in der Auswahlliste von Unterabfragen nicht verwendet werden.
Da sie einen einzelnen Wert zurückgeben müssen, können Unterabfragen, die mit einem nicht geänderten Vergleichsoperator (dem nicht das Schlüsselwort ANY oder ALL folgt) eingeleitet werden, keine GROUP BY- und HAVING-Klauseln enthalten.
Das DISTINCT-Schlüsselwort darf nicht bei Unterabfragen verwendet werden, die GROUP BY einschließen.
Die Klauseln COMPUTE und INTO können nicht angegeben werden.
ORDER BY kann nur angegeben werden, wenn auch TOP angegeben ist.
Eine mit einer Unterabfrage erstellte Sicht kann nicht aktualisiert werden.
Die Auswahlliste einer mit EXISTS eingeleiteten Unterabfrage besitzt laut Vereinbarung ein Sternchen (*) statt eines einzelnen Spaltennamens. Die Regeln für eine mit EXISTS eingeleitete Unterabfrage entsprechen den Regeln für eine standardmäßige Auswahlliste, da eine mit EXISTS eingeleitete Unterabfrage einen Test auf das Vorhandensein bestimmter Daten erstellt und keine Daten, sondern TRUE oder FALSE zurückgibt.