El operador EXISTS comprueba cuántos registros hay en el resultado de una subconsulta. Si está vacío, el operador devuelve 0. En caso contrario, devuelve 1.
EXISTS también puede usarse en una cláusula WHERE.
No se admiten referencias a tablas ni columnas de la consulta principal dentro de una subconsulta.
Sintaxis
Ejemplo
Consulta para comprobar la existencia de valores en una subconsulta:
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 │
└───────────────────┴───────────────────┘
Consulta con una subconsulta que devuelve varias filas:
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 8);
┌─count()─┐
│ 10 │
└─────────┘
Consulta con una subconsulta que devuelve un resultado vacío:
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 11);
┌─count()─┐
│ 0 │
└─────────┘