Поиск
Архивы
Админ
Правильное понимание ANY и ALL sql
В SQL сказать, что значение больше (или меньше) чем любое (ANY) из набора значений — тоже самое что сказать, что оно больше (или меньше) чем любое одно отдельное из этих значений. И наоборот, сказать, что значение не равно всему (ALL) набору значений, тоже что сказать, что нет такого значения в наборе, которому оно равно.
Как ANY, ALL, и EXIST поступают с отсутствующими и неизвестными данными
Как было сказано, имеются некоторые различия между EXISTS и операторами, представленными в этой главе, относительно того, как они обрабатывают оператор NULL. ANY и ALL также отличаются друг от друга тем, как они реагируют, если подзапрос не произвел никаких значений, чтобы использовать их в сравнении. Эти различия могут привести к непредвиденным результатам на Ваши запросы, если вы не будете их учитывать.
Когда подзапрос возвращается пустым
Одно значительное различие между ALL и ANY — способ действия в ситуации, когда подзапрос не возвращает никаких значений. В принципе, всякий раз, когда допустимый подзапрос не в состоянии сделать вывод, ALL — автоматически верен, а ANY автоматически неверен. Это означает, что следующий запрос
SELECT *
FROM Customers
WHERE rating > ANY (SELECT rating
FROM Customers
WHERE city = 'Boston');
не произведет никакого вывода, в то время как запрос
SELECT *
FROM Customers
WHERE rating > ALL (SELECT rating
FROM Customers
WHERE city = 'Boston');
выведет всю таблицу Заказчиков. Когда нет никаких заказчиков в Boston, естественно, ни одно из этих сравнений не имеет значения.
Популярность: 5%
