Pular para o conteúdo

Fóruns SQL e PL/SQL Dúvidas sobre operadores ANY e ALL. Dúvidas sobre operadores ANY e ALL.

#98936
burga
Participante

    [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…