С помощью ALL, предикат является верным, если каждое значение, выбранное подзапросом удовлетворяет условию в предикате внешнего запроса. Если мы хотим пересмотреть наш предыдущий пример, чтобы вывести только тех заказчиков, чьи оценки фактически выше, чем у каждого заказчика в Париже, мы можем ввести следующее чтобы произвести вывод, показанный в Рисунке 13.9:
SELECT * FROM Customers WHERE rating > ALL (SELECT rating FROM Customers WHERE city = Rome ):
SQL Execution Log
SELECT *
FROM Customers
WHERE rating > ALL
(SELECT rating
FROM Customers
WHERE city = ‘ Rome ‘);
cnum
cname
city
rating
snum
2004
Grass
Berlin
300
1002
2008
Cisneros
San Jose
300
1007
Рисунок 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|);
SQL Execution Log
SELECT *
FROM Customers outer
WHERE NOT EXISTS
(SELECT *
FROM Customers inner
WHERE outer rating = inner.rating
AND inner.city = ‘ Rome ‘);
cnum
cname
city
rating
snum
2004
Grass
Berlin
300
1002
2008
Cisneros
San Jose
300
1007
Рисунок 13.10: Использование EXISTS в качестве альтернативы к ALL
‹ Как ANY может стать неоднозначным
Вверх
Равенства и неравенства ›