Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Difference between ANY and ALL operators

martin75Oct 16 2007 — edited Oct 16 2007

I am learning the basics of ANY and ALL operators.

Retrieving all employees in Dept 30 whose sal is greater than ANY employees in Dept 20

SQL> SELECT * FROM EMP;

     EMPNO ENAME           JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- --------------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH           CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN           SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD            SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES           MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN          SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE           MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK           MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT           ANALYST         7566 19-APR-87       3000                    20
      7839 KING            PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER          SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS           CLERK           7788 23-MAY-87       1100                    20

     EMPNO ENAME           JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- --------------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES           CLERK           7698 03-DEC-81        950                    30
      7902 FORD            ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER          CLERK           7782 23-JAN-82       1300                    10

14 rows selected.

SQL> SELECT * FROM EMP WHERE DEPTNO=20;

     EMPNO ENAME           JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- --------------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH           CLERK           7902 17-DEC-80        800                    20
      7566 JONES           MANAGER         7839 02-APR-81       2975                    20
      7788 SCOTT           ANALYST         7566 19-APR-87       3000                    20
      7876 ADAMS           CLERK           7788 23-MAY-87       1100                    20
      7902 FORD            ANALYST         7566 03-DEC-81       3000                    20

SQL> SELECT * FROM EMP WHERE DEPTNO=30;

     EMPNO ENAME           JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- --------------- --------- ---------- --------- ---------- ---------- ----------
      7499 ALLEN           SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD            SALESMAN        7698 22-FEB-81       1250        500         30
      7654 MARTIN          SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE           MANAGER         7839 01-MAY-81       2850                    30
      7844 TURNER          SALESMAN        7698 08-SEP-81       1500          0         30
      7900 JAMES           CLERK           7698 03-DEC-81        950                    30

6 rows selected.

SQL> SELECT * FROM EMP
  2  WHERE SAL>ALL
  3  (SELECT SAL FROM
  4  EMP WHERE DEPTNO=20)
  5  AND DEPTNO=30;

no rows selected

SQL> SELECT * FROM EMP
  2   WHERE SAL>ANY
  3   (SELECT SAL FROM
  4   EMP WHERE DEPTNO=20)
  5   AND DEPTNO=30;

     EMPNO ENAME           JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- --------------- --------- ---------- --------- ---------- ---------- ----------
      7698 BLAKE           MANAGER         7839 01-MAY-81       2850                    30
      7499 ALLEN           SALESMAN        7698 20-FEB-81       1600        300         30
      7844 TURNER          SALESMAN        7698 08-SEP-81       1500          0         30
      7521 WARD            SALESMAN        7698 22-FEB-81       1250        500         30
      7654 MARTIN          SALESMAN        7698 28-SEP-81       1250       1400         30
      7900 JAMES           CLERK           7698 03-DEC-81        950                    30

6 rows selected.

From a book by Damir Bersinic:
An easy shorthand enables you to remember the distinction between ANY and
ALL. If a query condition is >ANY, each row in the result set is greater than the lowest value returned. When a query is >ALL, each row in the result set is greater than the highest value returned.

He meant ; If a query condition is >ANY, each row in the result set is greater than the lowest value returned by the subquery. Didn't he?

I couldn't find ANY and ALL operators in 10g SQL Reference? Are these operators being replaced by anything?

Message was edited by:
for_good_reason

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 13 2007
Added on Oct 16 2007
5 comments
3,598 views