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.

Ćwicz to