Mengenvergleichsprädikat (quantified_predicate)
Durch die Angabe eines Mengenvergleichs
prädikats ( quantified_predicate ) wird ein Vergleich eines Wertes bzw. einer Werteliste mit einer Menge von Werten bzw. Wertelisten durchgeführt.Syntax
<quantified_predicate> ::=
<expression> <comp_op> <quantifier> <expression_list>
| <expression> <comp_op> <quantifier> <subquery>
| <expression_list> <equal_or_not> <quantifier> (<expression_list>,...)
| <expression_list> <equal_or_not> <quantifier> <subquery>
Für den Vergleich von Werten stehen folgende Vergleichsoperatoren zur Verfügung:
<, >, <>, !=, =, <=, >= (
Für den Vergleich von Wertelisten stehen nur die Vergleichsoperatoren = und <> zur Verfügung (
equal_or_not).Zur Qualifizierung des Mengenvergleichs stehen ALL bzw. SOME oder ANY zur Verfügung (
quantifier).Erläuterung
Die Subquery (
subquery ) muß eine Ergebnistabelle (siehe Ergebnistabellenname) liefern, die so viele Spalten enthält wie Werte durch den Ausdruck ( expression bzw. expression_list ) auf der linken Seite des Operators erzeugt sind.Jede auf der rechten Seite des Vergleichsoperators
equal_or_not angegebene Werteliste ( expression_list ) muß so viele Werte enthalten, wie in der Werteliste vor dem Vergleichsoperator equal_or_not angegeben sind.In der folgenden Aufstellung bedeutet ‘------‘, daß keine Aussage getroffen werden kann, wenn nur das Ergebnis des Vergleichs mit einem s bekannt ist.
x <compare> <quantifier> S, wobei compare ::= comp_op | equal_or_not
|
quantifier ::= ALL |
quantifier ::= ANY | SOME | |
S ist leer |
wahr |
falsch |
x <compare> S ist wahr für mindestens ein s aus S |
------ |
wahr |
x <compare> S ist wahr für alle s aus S |
wahr |
wahr |
x <compare> S ist für keinen Wert s aus S falsch und ist wenigstens für einen Wert s undefiniert |
undefiniert |
|
S enthält NULL-Werte und x <compare> S ist wahr für alle anderen s |
undefiniert |
wahr |
x <compare> S ist für wenigstens einen Wert s aus S falsch |
falsch |
------ |
x <compare> S ist falsch für alle s aus S |
falsch |
falsch |
x <compare> S ist für keinen Wert aus aus S wahr und für wenigstens einen Wert s undefiniert |
undefiniert | |
S enthält NULL-Werte und x <compare> S ist falsch für alle anderen s |
falsch |
undefiniert |

Beispieltabelle
Liste von Hotels, die dieselben Namen haben wie irgendwelche Orte in der Basistabelle.
SELECT name, ort FROM hotel
WHERE name = ANY (SELECT ort FROM hotel)
Die Subquery
SELECT ort FROM hotel ermittelt die Ortsnamenliste, mit der die Hotelnamen verglichen werden.