Om alle gebruikers te vinden met ten minste één bericht met een beoordeling boven de 10, gebruik je:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS geeft niet om de SELECT-instructie die erin zit - je zou NULL kunnen vervangen door 1/0, wat zou moeten resulteren in een wiskundige fout voor delen door nul... de WHERE-clausule.
De correlatie (de WHERE p.user_id =u.id) is waarom dit een gecorreleerde subquery wordt genoemd, en zal alleen rijen uit de USERS-tabel retourneren waar de id-waarden overeenkomen, naast de beoordelingsvergelijking.
EXISTS is ook sneller, afhankelijk van de situatie, omdat het true retourneert zodra aan de criteria is voldaan - duplicaten doen er niet toe.