Чтобы найти всех пользователей с хотя бы одним постом с рейтингом выше 10, используйте:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS не заботит оператор SELECT внутри него - вы можете заменить NULL на 1/0,что должно привести к математической ошибке при делении на ноль ... Но это не так, потому что EXISTS имеет дело только с фильтрацией в предложении WHERE.
Корреляция (WHERE p.user_id = u.id) является причиной, по которой это называется коррелированным подзапросом, и будет возвращать только строки из таблицы USERS, где совпадают значения идентификатора, в дополнение к сравнению рейтинга.
EXISTS также быстрее, в зависимости от ситуации, потому что он возвращает значение true, как только критерии соблюдены - дубликаты не имеют значения.