Оператор exists принимает значение True (Истина), если результат выполнения подзапроса является непустым множеством. Если порожденное подзапросом множество пусто, то exists принимает значение False (Ложь). Оператор not exists работает в точности наоборот. Он истинен, если результат подзапроса пуст, и ложен в противном случае.
Замечание
Операторы exists и not exists всегда помещаются перед подзапросом.
В качестве примера выберем наименования товаров, которые заказати покупатели из Новгорода:
SELECT cNmGoods ;
FROM Goods
WHERE EXISTS
(SELECT *
FROM Customer, Ordsalem, Ordsaled ;
WHERE Ordsalem.icdOrder=Ordsaled.icdOrder ;
AND Ordsalem.iCdCustomer = Customer.iCdCustomer ;
AND Ordsaled.iCdGoods = Goods.iCdGoods ;
AND Customer.cCity = 'Новгород')