Considere el ejemplo del EMP
tabla en ese enlace.
Específicamente esta consulta -
SELECT e1.empno, e1.sal
FROM emp e1
WHERE e1.sal > ANY (SELECT e2.sal
FROM emp e2
WHERE e2.deptno = 20);
En caso de CUALQUIERA, la pregunta que está haciendo es "¿Es mi salario mayor que cualquiera en el departamento 20 (al menos 1 persona)". Esto significa que espera al menos uno persona tiene un salario menor que usted. Cuando no hay filas, esto devuelve FALSE
porque no hay nadie cuyo salario sea menor que el tuyo, esperabas al menos uno.
En el caso de TODOS, la pregunta obvia que te estarías haciendo es "¿Es mi salario mayor que el de todos?". Parafraseando eso como "¿No hay nadie que tenga un salario mayor que yo?" Cuando no se devuelven filas, su respuesta es TRUE
, porque "en verdad no hay nadie cuyo salario sea mayor que el mío".