Intern
¿Cuál es la diferencia entre una subconsulta en WHERE id IN (SELECT ...) y una subconsulta con WHERE EXISTS (SELECT ...)? IN compara los valores con un conjunto de resultados, EXISTS verifica si hay al menos una fila IN se ejecuta para cada fila de la consulta externa, EXISTS una sola vez No hay diferencia IN solo funciona con números, EXISTS con cualquier tipo
sobes.tech AI
Respuesta de la IA
Respuesta correcta: IN compara los valores con un conjunto de resultados, EXISTS verifica la existencia de al menos una fila.
La subconsulta con IN devuelve filas donde el valor coincide con cualquiera de los valores devueltos por la subconsulta. La subconsulta con EXISTS verifica si existe al menos una fila que cumpla con la condición.
Diferencias:
- IN compara valores específicos, EXISTS verifica la existencia de filas.
- EXISTS suele ser más eficiente para verificar la existencia, especialmente en condiciones complejas.
Ejemplo:
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 consultas seleccionan pedidos de clientes activos, pero funcionan de manera diferente.