В даному прикладі внутрішній запит, як і в попередньому варіанті, повідомляє, що студент отримав декілька оцінок. Зовнішній запит - це об'єднання таблиць успішності і студентів. Нова пропозиція основного предиката, що з'явилася, AND FIRST.SNUM = SECOND.SNUM оцінюється на тому ж самому рівні, що і пропозиція EXISTS, т.к. це елемент предиката самого об'єднання двох таблиць із зовнішнього запиту.
З урахуванням того, що EXISTS може працювати в комбінації з булевими операторами, найбільш очевидним способом його використовування є поєднання з оператором NOT. Наприклад, для отримання інформації про студентів, що мають тільки одну оцінку, можна скористатися наступним запитом:
SELECT DISTINCT FIRST.SNUM, FIRST.SFAM
FIRST.SIMA, FIRST.SOTCH
FROM STUDENTS FIRST, USP SECOND
WHERE NOT EXISTS
(SELECT *
FROM USP THIRD
WHERE SECOND.SNUM = THIRD.SNUM
AND SECOND.PNUM < > THIRD. PNUM)
AND FIRST.SNUM = SECOND.SNUM;
Висновок цього запиту приведений нижче:
SNUM SFAM SIMA' SOTCH
3413 Огарева Любов Михайлівна
3414 Гріценко Володимир Миколайович
3416 Нагірний Євгеній Васильович
Важливою властивістю EXISTS є та. що він не може узяти агрегатну функцію в підзапиті, т.к. якщо агрегатна функція знайшла які-небудь записи для операцій з ними, то EXISTS буде вірний в жодному разі. Виходом з такої ситуації є використовування вкладеного підзапиту в підзапиті, в предикаті якого присутній EXISTS. Це дозволяє ретельно структурувати запити, роблячи їх більш зрозумілими. Повертаючись наприклад із знаходженням інформації про студентів, що мають більше однієї оцінки, можна запропонувати такий варіант запиту:
SELECT *
FROM STUDENTS FIRST
WHERE EXISTS (SELECT *
FROM USP SECOND
WHERE FIRST.SNUM = SECOND.SNUM AND 1 <
(SELECT COUNT (*)
FROM USP
WHERE USP.SNUM = SECOND.SNUM));
В результаті буде отримано:
SNUM SFAM SIMA SOTCH STIP