EXISTS e NOT EXISTS
Teste se uma subconsulta encontra alguma linha. EXISTS é verdadeiro quando encontra; NOT EXISTS é verdadeiro quando não encontra nenhuma.
Sintaxe
WHERE EXISTS (SELECT 1 FROM table WHERE …);WHERE NOT EXISTS (SELECT 1 FROM table WHERE …);
- SELECT 1 basta: EXISTS só verifica se uma linha é retornada.
Exemplo
SELECT first_name FROM customers AS c WHERE EXISTS (SELECT 1 FROM orders AS o WHERE o.customer_id = c.customer_id);
Clientes que fizeram pelo menos um pedido.
Tabelas usadas: customers, orders. Experimente em uma lição abaixo.
Erros comuns
- Use NOT EXISTS, e não NOT IN, quando a subconsulta puder retornar NULL: um único NULL faz NOT IN não retornar nenhuma linha.