Syntax:
operand
comparison_operator
ANY (subquery
)operand
IN (subquery
)operand
comparison_operator
SOME (subquery
)
Das Schlüsselwort ANY
, das einem
Vergleichsoperator folgen muss, bedeutet „Gib
TRUE
zurück, wenn der Vergleich für jeden
beliebigen Wert in der Spalte, die die Unterabfrage
zurückgibt, wahr ist“. Zum Beispiel:
SELECT s1 FROM t1 WHERE s1 > ANY (SELECT s1 FROM t2);
Nehmen wir an, dass die Tabelle t1
einen
Datensatz mit dem Inhalt (10)
umfasst. Der
Ausdruck ist wahr, wenn Tabelle t2
(21,14,7)
enthält, weil ein Wert
7
in t2
vorhanden ist,
der kleiner als 10
ist. Der Ausdruck ist
hingegen falsch, wenn Tabelle t2
(20,10)
enthält oder leer ist. Der
Ausdruck ist schließlich unbekannt
(UNKNOWN
), wenn Tabelle
t2
(NULL,NULL,NULL)
enthält.
Das Wort IN
ist ein Alias für =
ANY
. Insofern sind die folgenden beiden Anweisungen
gleichwertig:
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
Allerdings ist NOT IN
kein Alias für
<> ANY
, wohl aber für
<> ALL
. Siehe auch
Abschnitt 13.2.8.4, „Unterabfragen mit ALL
“.
Das Wort SOME
ist ein Alias für
ANY
. Insofern sind die folgenden beiden
Anweisungen gleichwertig:
SELECT s1 FROM t1 WHERE s1 <> ANY (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2);
Das Wort SOME
wird zwar nur selten
verwendet, dieses Beispiel zeigt aber, wofür es nützlich
sein kann. Die meisten Menschen fassen die Phrase „a ist
nicht gleich irgendeinem b“ als „Es gibt kein b,
welches gleich a ist“ auf, aber das ist bei der
SQL-Syntax nicht gemeint. Hier bedeutet dies vielmehr
„Es gibt (mindestens) ein b, dem a nicht gleich
ist“. Indem Sie stattdessen <>
SOME
verwenden, gewährleisten Sie, dass jeder die
tatsächliche Meinung der Abfrage versteht.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.