sql >> Databasteknik >  >> RDS >> Oracle

ALL operator VS Any på en tom fråga

Tänk på exemplet med EMP tabell i den länken.

Specifikt den här frågan -

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

I händelse av NÅGON är frågan du ställer "Är min lön högre än någon på avdelning 20 (minst 1 person)". Det betyder att du hoppas på minst en person har en lägre lön än du. När det inte finns några rader returnerar detta FALSE eftersom det inte finns någon vars lön är lägre än du, hoppades du på minst en.

I fall av ALLA är den uppenbara frågan du skulle ställa "Är min lön högre än alla?". Omformulerar det som "Finns det ingen som har högre lön än jag?" När inga rader returneras är ditt svar TRUE , för "det finns verkligen ingen vars lön är högre än jag.



  1. Antalet MySQL-kolumner stämmer inte överens med antalet värden, men antalet matchar INTE

  2. LibreOffice:'com.mysql.jdbc.driver' kan inte laddas

  3. Hur man klona R12.2 miljö

  4. Används XA/JTA-transaktioner fortfarande?