EXISTS e NOT EXISTS

Verifica se una sottoquery trova almeno una riga. EXISTS è vero se la trova; NOT EXISTS è vero se non ne trova nessuna.

Sintassi

WHERE EXISTS (SELECT 1 FROM table WHERE …);
WHERE NOT EXISTS (SELECT 1 FROM table WHERE …);
  • SELECT 1 basta: EXISTS controlla solo se viene restituita una riga.

Esempio

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

Clienti che hanno effettuato almeno un ordine.

Tabelle usate: customers, orders. Provalo in una lezione qui sotto.

Errori comuni

  • Usa NOT EXISTS, non NOT IN, quando la sottoquery può restituire NULL: un solo NULL fa sì che NOT IN non restituisca righe.

Esercitati