EXISTS i NOT EXISTS
Sprawdź, czy podzapytanie znajduje jakikolwiek wiersz. EXISTS jest prawdziwe, gdy coś znajdzie; NOT EXISTS jest prawdziwe, gdy nic nie znajdzie.
Składnia
WHERE EXISTS (SELECT 1 FROM table WHERE …);WHERE NOT EXISTS (SELECT 1 FROM table WHERE …);
- SELECT 1 wystarczy: EXISTS sprawdza tylko, czy zwrócono wiersz.
Przykład
SELECT first_name FROM customers AS c WHERE EXISTS (SELECT 1 FROM orders AS o WHERE o.customer_id = c.customer_id);
Klienci, którzy złożyli co najmniej jedno zamówienie.
Użyte tabele: customers, orders. Wypróbuj to w lekcji poniżej.
Typowe błędy
- Używaj NOT EXISTS, a nie NOT IN, gdy podzapytanie może zwrócić NULL: pojedynczy NULL sprawi, że NOT IN nie zwróci żadnych wierszy.