Der Wert einer Zeile wird mit den Zeilen einer Tabelle verglichen. Entweder wird bestimmt, ob der Vergleich für alle Zeilen der Tabelle zutrifft, oder ob er wenigstens für eine Zeile zutrifft.
zeile vergleichs_op { ALL | SOME | ANY }
unterabfrage_1
zeile ::= { (
ausdruck ,...) |
ausdruck |
unterabfrage_2 }
vergleichs_op ::= { = | < | > | <= | >=| <> }
zeile
Linker Operand für den Vergleich.
Jeder ausdruck in zeile muss einfach sein. Die Zeile besteht aus den Werten von ausdruck in der angegebenen Reihenfolge. Ein einzelner ausdruck liefert also eine Zeile mit einer Spalte.
unterabfrage_2 muss eine Tabelle ohne multiple Spalten liefern, die höchstens eine Zeile hat. Diese Zeile ist der linke Vergleichsoperand. Ist die gelieferte Tabelle leer, so besteht der Vergleichsoperand aus einer Zeile, deren Spalten alle den Wert NULL haben.
vergleichs_op
Vergleichsoperator:
= < > <= >= <> | Vergleich auf gleich Vergleich auf kleiner Vergleich auf größer Vergleich auf kleiner oder gleich Vergleich auf größer oder gleich Vergleich auf ungleich |
unterabfrage_1
Die Anzahl der Spalten muss gleich der Anzahl der Spalten von zeile sein, und korrespondierende Spalten von zeile und unterabfrage_1 müssen verträgliche Datentypen haben (siehe Abschnitt „Verträglichkeit von Datentypen").
Ergebnis
ALL
Wahr, wenn der rechte Operand eine leere Tabelle ist, oder wenn der Vergleich des linken Operanden zeile mit allen Zeilen des rechten Operanden wahr ergibt.
Falsch, wenn der Vergleich des linken Operanden zeile mit mindestens einer Zeile des rechten Operanden falsch ergibt.
Unbestimmt, sonst.
SOME / ANY
Wahr, wenn der Vergleich des linken Operanden zeile mit mindestens einer Zeile des rechten Operanden wahr ergibt.
Falsch, wenn der rechte Operand eine leere Tabelle ist, oder wenn der Vergleich des linken Operanden zeile mit allen Zeilen des rechten Operanden falsch ergibt.
Unbestimmt, sonst.
Alle Vergleiche erfolgen nach den Vergleichsregeln in Abschnitt „Vergleichsregeln" auf "Vergleichsregeln".
Beispiele
Folgender Vergleich ist wahr, wenn das aktuelle Datum nach allen Terminen in der Ergebnisspalte liegt und all diese Termine ungleich NULL sind. Er ist falsch, wenn das aktuelle Datum früher als ein Termin oder gleichzeitig mit einem Termin ungleich NULL der Ergebnisspalte ist. In allen anderen Fällen ist das Ergebnis unbestimmt.
CURRENT_DATE > ALL (SELECT fertigsoll FROM auftrag)
Aus der Tabelle VERWENDUNG die Artikel heraussuchen, die einen Bestandteil enthalten, dessen Anzahl höher ist als die Anzahl aller Bestandteile des Artikels mit der Artikelnummer
SELECT artnr FROM verwendung
WHERE anzahl > ALL (SELECT anzahl FROM verwendung WHERE artnr = 1)