За да намерите всички потребители с поне една публикация с рейтинг над 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 веднага щом критериите бъдат изпълнени – дубликатите нямат значение.