Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Operator ALL VS Any na pustym zapytaniu

Rozważ przykład EMP tabeli w tym linku.

Konkretnie to zapytanie -

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

W przypadku JAKICHKOLWIEK pytanie, które zadajesz, brzmi:„Czy moja pensja jest wyższa niż ktokolwiek w dziale 20 (przynajmniej 1 osoba)”. Oznacza to, że masz nadzieję, że co najmniej jeden osoba ma pensję mniejszą niż ty. Gdy nie ma wierszy, zwraca FALSE ponieważ nie ma nikogo, kto miałby niższą pensję niż ty, miałeś nadzieję na przynajmniej jedną.

W przypadku WSZYSTKICH oczywistym pytaniem, które byś zadał, jest „Czy moja pensja jest większa niż wszyscy?”. Reformując to jako „Czy nie ma nikogo, kto ma wyższą pensję ode mnie?” Jeśli nie zostaną zwrócone żadne wiersze, Twoja odpowiedź to TRUE , ponieważ „rzeczywiście nie ma nikogo, kto miałby większe wynagrodzenie niż ja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyrocznia i paginacja

  2. Skrypt Liquibase zwraca ORA-01843:niepoprawny miesiąc

  3. ORA-01036:nieprawidłowa nazwa/numer zmiennej podczas wywoływania zapisanej funkcji

  4. Wyjątek wdrożenia Weblogic :PaddingException:nie można wykonać uzupełnienia:nieprawidłowy bajt wypełnienia

  5. Problem z tworzeniem widoku Oracle