O operador EXISTS verifica quantos registros há no resultado de uma subconsulta. Se ele estiver vazio, o operador retornará 0. Caso contrário, retornará 1.
EXISTS também pode ser usado em uma cláusula WHERE.
Referências a tabelas e colunas da consulta principal não são compatíveis em uma subconsulta.
Sintaxe
Exemplo
Consulta para verificar a existência de valores em uma 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 com uma subconsulta que retorna várias linhas:
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 8);
┌─count()─┐
│ 10 │
└─────────┘
Consulta com uma subconsulta que retorna um resultado vazio:
SELECT count() FROM numbers(10) WHERE EXISTS(SELECT number FROM numbers(10) WHERE number > 11);
┌─count()─┐
│ 0 │
└─────────┘