Chcete-li najít všechny uživatele s alespoň jedním příspěvkem s hodnocením vyšším než 10, použijte:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS se nestará o příkaz SELECT v něm - můžete nahradit NULL za 1/0, což by mělo mít za následek matematickou chybu při dělení nulou... Ale nebude, protože EXISTS se zabývá pouze filtrací v klauzule WHERE.
Korelace (WHERE p.user_id =u.id) je důvod, proč se tomu říká korelovaný dílčí dotaz a kromě srovnání hodnocení vrátí pouze řádky z tabulky USERS, kde se hodnoty id shodují.
EXISTS je také rychlejší v závislosti na situaci, protože vrací true, jakmile jsou splněna kritéria – duplikáty nehrají roli.