Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Специальные операторы ANY или SOME

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

SQL Execution Log

SELECT *

FROM Salespeople WHERE city = ANY (SELECT city

FROM Customers);

cnum cname city comm
1001 Peel London 0.12
1002 Serres San Jose 0.13
1004 Motika London 0.11

Рисунок 13. 1: Использование оператора ANY     Это означает, что подзапрос должен выбирать значения такого же типа как и те, которые сравниваются в основном предикате. В этом его отличие от EXISTS, который просто определяет, производит ли подзапрос результаты или нет, и фактически не использует эти результаты.