ALL
Оператор ALL
Замість ключового слова any може бути використано оператор all, який точнотак само використовується спільно з одним з шести операторів порівняння("=","<>", "<", "<=", ">", "> =" ). У цьому випадку перевіряєме значення також по черзі порівнюється з кожним елементом, який повертає вкладений запит, але рядки повертається тільки тоді, коли всі порівняння повертають 1 (істина).
Зауваження
Якщо у виразах з ключовим словом any використовується логіка АБО, тобтодостатньо, щоб спрацьовувало хоча б одна з багатьох умов, то в разі allвикористовується логіка І - повинні спрацьовувати всі умови.
У прикладі представлений запит, який повертає всі товарні позиції з таблиціproducts бази даних shop, ціна яких перевищує середню ціну кожного з каталогів.
Приклад
SELECT name, price FROM products
WHERE price > ALL (SELECT AVG(price) FROM products В
GROUP BY id_catalog);
name price
lintel Pentium 4 3.2GHz 725.00
Intel Pentium 4 3.0GHz 614.00
Intel Pentium 4 3.0GHz 567.00
Asustek P4C80C-E Delux 539.00
ASUSTEK A9600XT/TD 515.00
GIGABYTE AGP GV-N59X128D 588.00
Для того щоб зрозуміти логіку запиту, представленого у прикладі, виведеморезультат вкладеного запиту окремо.
SELECT AVG(price) FROM products GROUP BY id_catalog;
AVG(price)
348.333333
280.166667
384.500000
274.00000C
141.000000
Умова all у прикладі еквівалентно вимозі вивести всі товарні позиції, ціна якихбільше кожного із значень результуючої таблиці запиту, наведеного вище.
Тобто запит вигляду
"WHERE> all (select Y. ..)"
Можна тлумачити як "де X більше будь-якого обраного Y".
А запит вигляду
"Where X <all (select Y. ..)"
Слід читати "де X менше, ніж всі вибрані Y. ..".
Помилки, які можуть виникнути, якщо оператор any містить умову "<>", відбуваються і при all.