› Fóruns › SQL e PL/SQL › Dúvidas sobre operadores ANY e ALL. › Dúvidas sobre operadores ANY e ALL.
[quote=”drigo”:1v7j80qx]1) ALL:
a) …posso afirmar que o operador ALL irá retornar o MAIOR valor dessa subquery para que o select possa ser executado sem erro ? Como realmente funciona o operador ALL ?
SELECT first_name,
last_name,
email
FROM employees
WHERE salary > ALL (SELECT min_salary FROM jobs);[/quote]
O ALL não irá retornar o maior valor. Ele irá retornar todos os valores da subconsulta normalmente.
Assim, a consulta vai comparar o salary com os valores retornados de min_salary da subconsulta e,
caso o salary for MAIOR DO QUE TODOS os valores (dado pelo operador “>”), retorna a linha, senão não.
[quote=”drigo”:1v7j80qx]2) ANY:
a) …posso afirmar que o operador ANY irá retornar o MENOR valor dessa subquery para que o select possa ser executado sem erro ? Como realmente funciona o operador ANY ?
SELECT first_name,
last_name,
email
FROM employees
WHERE salary > ANY (SELECT min_salary FROM jobs);[/quote]
Mesma idéia do ALL, mas ao invés de ser MAIOR DO QUE TODOS, é MAIOR DO QUE QUALQUER UM DELES.
Ou seja, apesar de ter lógica a sua pergunta, você não pode afirmar o que perguntou se pode afirmar
1) ALL = TODOS, então (> ALL) = MAIOR DO QUE TODOS
2) ANY = QUALQUER UM, então (> ANY) = MAIOR DO QUE QUALQER UM
Bem intuitivo… Sem segredos, sem mágica…
só estude o comportamento do ALL e ANY com valores NULOS também, pra não ser pego de surpresa…