Oracle/SQL2009. 12. 15. 13:05
상호관련 서브 쿼리(Correlated Sub Query)란?
서브쿼리가 메인쿼리의 컬럼을 참조하면 상호관련 서브 쿼리이다.
소속 부서의 평균 급여보다 많은 급여를 받는 사원

SQL> select * from emp e
     where sal > (select avg(sal) 
                  from emp
                  where deptno = e.deptno);


메인 쿼리의 ROW의 수만큼 서브 쿼리가 실행된다.

상호 관련이 있는 테이블의 update에 사용시 유용하다.

SQL> create table n_dept
     as
     select * from dept;
SQL> create table n_emp
     as 
     select * from emp;
SQL> alter table n_emp add (dname varchar2(10));
SQL> select * from n_dept;
SQL> update n_emp
     set dname = 'ACCOUNTING'
     where deptno = 10;

-- 한번에 부모 테이블의 값이 업데이트 됨
SQL> update n_emp e  
     set dname = (select dname
                  from n_dept

                  where deptno = e.deptno);



SQL> update n_dept
     set sum_sal = (select sum(sal)
                    from n_emp
                    where deptno = d.deptno);

'Oracle > SQL' 카테고리의 다른 글

현재 SCN 구하기  (0) 2010.10.01
히든 파라미터 확인 SQL  (0) 2010.09.01
timezone  (0) 2009.12.15
rollup, cube, grouping sets 연산자  (1) 2009.12.14
multi table insert  (0) 2009.12.14
Posted by 자수성가한 부자