sql >> Database teknologi >  >> RDS >> Oracle

ALL operator VS Any på en tom forespørgsel

Overvej eksemplet med EMP tabel i det link.

Specifikt denne forespørgsel -

SELECT e1.empno, e1.sal
FROM   emp e1
WHERE  e1.sal > ANY (SELECT e2.sal
                     FROM   emp e2
                     WHERE  e2.deptno = 20);

I tilfælde af NOGEN, er spørgsmålet, du stiller, "Er min løn større end nogen i afdeling 20 (mindst 1 person)". Det betyder, at du håber på mindst én person har en lavere løn end dig. Når der ikke er nogen rækker, returnerer dette FALSE fordi der ikke er nogen, hvis løn er mindre end dig, havde du håbet på mindst én.

I tilfælde af ALT er det åbenlyse spørgsmål, du ville stille, "Er min løn større end alle?". Omformulerer det som "Er der ingen, der har en højere løn end mig?" Når der ikke returneres rækker, er dit svar TRUE , fordi "der er faktisk ingen, hvis løn er højere end mig.



  1. Hvordan specificerer man en 'ordre efter' på tvetydig kolonne ved hjælp af fjederbatch og postgres?

  2. Hvorfor tillader MySQL at opdatere en NOT NULL kolonne til NULL?

  3. Sådan indstilles MySQL til at bruge GMT i Windows og Linux

  4. Hvordan opretter jeg navngivne vinduespartitioner (aliaser) i PostgreSQL?