Tuesday, June 10, 2014

Exits

EXISTS -> is useful to find out the outer query value exist in the
inner query or not atleast once. When for the outer query if match value exist in the inner
query, inner query returns TRUE and then outer query displays that row, if for
outer query match value doesn't exist in the inner query then inner query returns
FALSE and then outer query doesn't display that row.

NOT EXISTS -> will return result opposite to the exists.
===========
SELECT * FROM dept;

select d.* from dept d where EXISTS
(select e.empno from emp e where e.deptno = d.deptno);

select d.* from dept d where EXISTS
(select 1 from emp e where e.deptno = d.deptno);

select d.* from dept d where EXISTS
(select 'X' from emp e where e.deptno = d.deptno);

select d.* from dept d where NOT EXISTS
(select e.empno from emp e where e.deptno = d.deptno);

select d.* from dept d where exists
(select e.empno from emp e where e.deptno = d.deptno-10);

select d.* from dept d where exists
(select e.empno from emp e where e.deptno+10 = d.deptno-10);

select d.* from dept d where exists
(select e.empno from emp e where e.deptno+10 = d.deptno+10);

select * from dept d where exists
(select NULL from emp e where e.deptno = d.deptno);

select * from dept d where not exists
(select 9 from emp e where e.deptno = d.deptno);

select * from dept d where not exists
(select null from emp e where e.deptno = d.deptno);

SET TIMING ON
SELECT m.last_name FROM hr.employees m WHERE m.employee_id IN(
SELECT e.manager_id FROM hr.employees e);

SET TIMING ON
SELECT m.last_name FROM hr.employees m WHERE EXISTS (
SELECT 1 FROM hr.employees e WHERE m.employee_id=e.manager_id);


No comments:

Post a Comment