С помощью ALL, предикат является верным, если каждое значение, выбранное подзапросом удовлетворяет условию в предикате внешнего запроса. Если мы хотим пересмотреть наш предыдущий пример, чтобы вывести только тех заказчиков, чьи оценки фактически выше, чем у каждого заказчика в Париже, мы можем ввести следующее чтобы произвести вывод, показанный в Рисунке 13.9: SELECT * FROM Customers WHERE rating > ALL (SELECT rating FROM Customers WHERE city = Rome ):
Рисунок 13.9: Использование оператора ALL Этот оператор проверяет значения оценки всех заказчиков в Риме. Затем он находит заказчиков с оценкой большей, чем у любого из заказчиков в Риме. Самая высокая оценка в Риме - у Giovanni( 200 ). Следователь- но, выбираются только значения выше этих 200. Как и в случае с ANY, мы можем использовать EXISTS для производства альтернативной формулировки такого же запроса - ( вывод показан на Ри- сунке 13.10 ): SELECT * FROM Customers outer WHERE NOT EXISTS ( SELECT * FROM Customers inner WHERE outer.rating < = inner.rating AND inner.city = |Rome|);
Рисунок 13.10: Использование EXISTS в качестве альтернативы к ALL
|