728x90
서브쿼리문의 종류
1. 단일행 서브쿼리 : 서브쿼리에서 메인쿼리로 하나의 값이 리턴되는 문장
연산자 : =, !=, <>, ^=, <, >, >=, <=
2. 다중행 서브쿼리 : 서브쿼리에서 메인쿼리로 여러 개의 값이 리턴되는 문장
연산자 : in, not in, >all, <all, >any, <any
3. 다중 컬럼 서브쿼리 : 서브쿼리에서 메인쿼리로 여려 개의 칼럼 값이 리턴되는 문장
연산자 : in, not in
1. 단일행 서브쿼리 - 서브쿼리에서 메인쿼리로 하나의 값이 리턴되는 문장
=, !=, <>, ^=, <, >, >=, <= 의 연산자를 이용해서 비교한다.
예제) JONES의 월급보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal> (select sal
from emp
where ename = 'JONES');
2. 다중행 서브쿼리 - 서브쿼리에서 메인쿼리로 여러 개의 값이 리턴되는 문장
연산자
in : 일치하는 값을 찾음
not in : 일치하지 않는 값을 찾음
>all : 최대값 반환
<any : 최대값 반환
<all : 최소값 반환
>any : 최소값 반환
예제) 관리자인 사원들의 이름을 출력하시오( 자기 밑에 직속 부하가 한 명이라도 있는 사원들)
select ename
from emp
where empno in (select mgr from emp);
3. 다중 컬럼 서브쿼리 (multiple column subquery)
예제) 30번이 부서번호인 사원들과 월급도 같고 커미션도 같은 사원들의 이름, 월급, 커미션, 부서 번호를 출력하시오
select ename, sal, comm, deptno
from emp
where sal in (select sal
from emp
where deptno = 30)
and comm in (select comm
from emp
where deptno = 30);