Considere o exemplo do
EMP
tabela nesse link. Especificamente esta consulta -
SELECT e1.empno, e1.sal
FROM emp e1
WHERE e1.sal > ANY (SELECT e2.sal
FROM emp e2
WHERE e2.deptno = 20);
No caso de QUALQUER, a pergunta que você está fazendo é "Meu salário é maior do que qualquer um no departamento 20 (pelo menos 1 pessoa)". Isso significa que você espera pelo menos um pessoa tem um salário menor do que você. Quando não há linhas, isso retorna
FALSE
porque não há ninguém cujo salário seja menor do que você, você esperava pelo menos um. No caso de ALL, a pergunta óbvia que você estaria fazendo é "Meu salário é maior que o de todos?". Reformulando isso como "Não há ninguém que tenha salário maior do que eu?" Quando não há linhas retornadas, sua resposta é
TRUE
, porque "não há de fato ninguém cujo salário seja maior do que eu.