EXISTS
Exists function is a test
for existence. This is a logical test for the return of rows from a query.
Ex:
     Suppose we want to display the department
numbers which has more than 4 employees.
     SQL> select deptno,count(*) from emp
group by deptno having count(*) > 4;
   DEPTNO  
COUNT(*)
   ---------   
----------
       20             5
       30             6
     From the above query can you want to
display the names of employees?
      SQL> select deptno,ename, count(*)
from emp group by deptno,ename having count(*) > 4;
     No rows selected
     The above query returns nothing because
combination of deptno and ename never return more than one count.
     The solution is to use exists which
follows.
      SQL> select deptno,ename from emp e1
where exists (select * from emp e2
             where e1.deptno=e2.deptno group by
e2.deptno having count(e2.ename) > 4) order by deptno,ename;
    DEPTNO  
ENAME
     ---------- ----------
        20           
ADAMS
        20            FORD
        20            JONES
        20            SCOTT
        20            SMITH
        30            ALLEN
        30            BLAKE
        30            JAMES
        30            MARTIN
        30            TURNER
        30            WARD
NOT
EXISTS
SQL> select
deptno,ename from emp e1 where not exists (select * from emp e2
        where e1.deptno=e2.deptno group by
e2.deptno having count(e2.ename) > 4) order by deptno,ename;
   DEPTNO ENAME
    --------- ----------
       10             CLARK
       10             KING
       10             MILLER
 
 
No comments:
Post a Comment