Предикат ALL в якості аргумента використовує підзапит. Предикат з ALL приймає значення true, якщо кожне значення, вибране в процесі виконання підзапиту задовільняє умову задану в предикаті зовнішнього запиту.
Синтаксис опрератора такий:
<вираз для порівняння> <оператор порівняння> ALL <підзапит>
Наприклад вираз:
WHERE stowbch > ALL ( SELECT pole FROM tabl)
вказує на те, що значення стовпчика stowbch повинно бути більше всіх значень в стовпчику pole з таблиці tabl.
Предикат ALL дає результат true, false або unknown і працює за наступними правилами:
Позначимо через x результат обчислення арифметичного виразу лівої частини предиката, а через S результат обчислення підзапиту.
- Предикат "x <оператор порівняння> ALL S" має значення true, якщо множина S порожня або якщо значення предиката "x <оператор порівняння> s" рівно true для кожного s, яке входить в S.
- Предикат "x <оператор порівняння> ALL S" має значення false, якщо значення предиката "x <оператор порівняння> s" рівно false хоча б для одного s, що входить в S.
- В інших випадках значення предиката "x <оператор порівняння> ALL S" рівно unknown.
Наприклад, потрібно визначити адресу покупця, який придбав найбільшу кількість товарів:
SELECT c.*
FROM customer c
WHERE c.nom_pokup =
( SELECT rr.nom_pokup
FROM rozhod rr
GROUP BY rr.nom_pokup
HAVING SUM(rr.kilkist) > ALL
( SELECT SUM(rrr.kilkist)
FROM rozhod rrr
GROUP BY rrr.nom_pokup ) )