========= СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ ============ ANY или SOME
Операторы SOME и ANY - взаимозаменяемы везде и там где мы используем ANY, SOME будет работать точно так же.
Различие в терминологии состоит в том чтобы позволить людям использовать тот термин который наиболее
однозначен.
Это может создать проблему; потому что, как мы это увидим, наша интуиция может иногда вводить в заблуждение.
Имеется
новый способ нахождения продавца с заказчиками размещенными в их городах ( вывод для этого запроса показывается в
Рисунке 13.1 ):
SELECT * FROM Salespeople WHERE city = ANY (SELECT city FROM Customers );
Оператор ANY берет все
значения выведенные подзапросом, ( для этого случая - это все значения city в таблице Заказчиков ), и
оценивает их как
верные если любой(ANY) из их равняется значению города текущей строки внешнего запроса.
cnum |
cname |
city |
comm |
1001 |
Peel |
London |
0.12 |
1002 |
Serres |
San Jose |
0.13 |
1004 |
Motika |
London |
0.11 |
Рисунок 13. 1: Использование оператора ANY
Это означает, что подзапрос должен выбирать значения такого же типа как и
те, которые сравниваются в основном предикате. В этом его отли- чие от EXISTS, который просто
определяет, производит
ли подзапрос результаты или нет, и фактически не использует эти результаты.