Intern
Qual é a diferença entre uma subconsulta em WHERE id IN (SELECT ...) e uma subconsulta com WHERE EXISTS (SELECT ...)? IN compara os valores com um conjunto de resultados, EXISTS verifica se há pelo menos uma linha IN é executado para cada linha da consulta externa, EXISTS uma vez Não há diferença IN funciona apenas com números, EXISTS com qualquer tipo
sobes.tech IA
Resposta da IA
Resposta correta: IN compara os valores com um conjunto de resultados, EXISTS verifica a existência de pelo menos uma linha.
A subconsulta com IN devolve linhas onde o valor corresponde a qualquer um dos valores devolvidos pela subconsulta. A subconsulta com EXISTS verifica se existe pelo menos uma linha que satisfaça a condição.
Diferenças:
- IN compara valores específicos, EXISTS verifica a existência de linhas.
- EXISTS costuma ser mais eficiente na verificação de existência, especialmente em condições complexas.
Exemplo:
SELECT * FROM orders o
WHERE o.customer_id IN (SELECT c.id FROM customers c WHERE c.status = 'active');
SELECT * FROM orders o
WHERE EXISTS (SELECT 1 FROM customers c WHERE c.id = o.customer_id AND c.status = 'active');
Ambas as consultas selecionam pedidos de clientes ativos, mas funcionam de forma diferente.