SQL ALL-Operator?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Der ALL Operator muss für die gewählte Subquery-Vergleichscolumn sämtliche Rows des Subqueries auf die Bedingung prüfen, die im Zusammenhang mit ALL angegeben wurde. Es ist anders nicht möglich (mit irgend einer technischen Abkürzung).

Beim ANY-Operator (äquivalent zu SOME) hingegen genügt es, wenn das DBMS genau eine Row im Subquery findet, die Bedingung im Zusammenhang mit ANY erfüllt. Es ist dann nicht mehr nötig, noch alle verbleibenden Rows des Subqueries zu prüfen, falls es noch weitere Rows in dessen Resultset gibt.

Weiter gilt noch: "IN" ist äquivalent zu "= ANY", "NOT IN" ist äquivalent zu "<> ALL".

Was deine Abfrage letztlich ausgibt, bestimmst Du aber in der Hauptabfrage und nicht im Subquery. D.h. auch wenn die ALL/ANY -Bedingung erfüllt ist, kann es sein, dass Dein Hauptquery gar nichts zurückgibt. Typischerweise hast Du ein Hauptquery, welches irgendwo eine WHERE-Clause hat, in welcher dann das ALL/ ANY Statement mit einem Boolesch'en Operator steht, und rechts des ALL/ ANY folgt dann das Subquery in Klammern.