Um alle Benutzer mit mindestens einem Beitrag mit einer Bewertung über 10 zu finden, verwenden Sie:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS kümmert sich nicht um die SELECT-Anweisung darin - Sie könnten NULL durch 1/0 ersetzen, was zu einem mathematischen Fehler beim Teilen durch Null führen sollte ... Aber das wird es nicht, weil EXISTS nur mit der Filterung befasst ist die WHERE-Klausel.
Aufgrund der Korrelation (WHERE p.user_id =u.id) wird dies als korrelierte Unterabfrage bezeichnet und gibt zusätzlich zum Bewertungsvergleich nur Zeilen aus der USERS-Tabelle zurück, in denen die ID-Werte übereinstimmen.
EXISTS ist je nach Situation auch schneller, weil es wahr zurückgibt, sobald die Kriterien erfüllt sind - Duplikate spielen keine Rolle.