Sobes.tech
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.