sql >> Base de Datos >  >> RDS >> Oracle

TODO operador VS Cualquiera en una consulta vacía

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".