L’opérateur EXISTS vérifie si le résultat d’une sous-requête contient des enregistrements. S’il est vide, l’opérateur renvoie 0. Sinon, il renvoie 1.
EXISTS peut également être utilisé dans une clause WHERE.
Les références aux tables et aux colonnes de la requête principale ne sont pas prises en charge dans une sous-requête.
Syntaxe
Exemple
Requête vérifiant l’existence de valeurs dans une sous-requête :
SELECT EXISTS(SELECT * FROM numbers(10) WHERE number > 8), EXISTS(SELECT * FROM numbers(10) WHERE number > 11)
┌─in(1, _subquery1)─┬─in(1, _subquery2)─┐
│ 1 │ 0 │
└───────────────────┴───────────────────┘
Requête avec une sous-requête renvoyant plusieurs lignes :
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 8);
┌─count()─┐
│ 10 │
└─────────┘
Requête avec une sous-requête qui renvoie un résultat vide :
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 11);
┌─count()─┐
│ 0 │
└─────────┘