EXISTS y NOT EXISTS

Comprueba si una subconsulta encuentra alguna fila. EXISTS es verdadero cuando la encuentra; NOT EXISTS es verdadero cuando no encuentra ninguna.

Sintaxis

WHERE EXISTS (SELECT 1 FROM table WHERE …);
WHERE NOT EXISTS (SELECT 1 FROM table WHERE …);
  • SELECT 1 basta: EXISTS solo comprueba si se devuelve alguna fila.

Ejemplo

SELECT first_name FROM customers AS c WHERE EXISTS (SELECT 1 FROM orders AS o WHERE o.customer_id = c.customer_id);

Personas clientas que han hecho al menos un pedido.

Tablas usadas: customers, orders. Pruébalo en una lección de abajo.

Errores comunes

  • Usa NOT EXISTS, no NOT IN, cuando la subconsulta pueda devolver NULL: un solo NULL hace que NOT IN no devuelva filas.

Practícalo