Операторы SOME и ANY - взаимозаменяемы везде и там где мы используем ANY, SOME будет работать точно так же. Различие в терминологии состоит в том, чтобы позволить людям использовать тот термин, который наиболее однозначен. Это может создать проблему; потому что, как мы это увидим, наша интуиция может иногда вводить в заблуждение. Имеется новый способ нахождения продавца с заказчиками размещенными в их городах ( вывод для этого запроса показывается в Рисунке 13.1 ): SELECT * FROM Salespeople WHERE city = ANY ( SELECT city FROM Customers ); Оператор ANY берет все значения, выведенные подзапросом, ( для этого случая - это все значения city в таблице Заказчиков ), и оценивает их как верные, если любой(ANY) из их равняется значению города текущей строки внешнего запроса.
Рисунок 13. 1: Использование оператора ANY Это означает, что подзапрос должен выбирать значения такого же типа как и те, которые сравниваются в основном предикате. В этом его отличие от EXISTS, который просто определяет, производит ли подзапрос результаты или нет, и фактически не использует эти результаты.
|