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.