# 다중 행 서브쿼리

하나 이상의 행을 RETURN하는 SUBQUERY를 다중 행 SUBQUERY라고 합니다.

복수 행 연산자(IN, NOT IN, ANY, ALL, EXISTS)를 사용 할 수 있습니다.

   

# 예제

IN 연산자 사용 예제

예제)부서별로 가장 급여를 많이 받는 사원의
정보를 출력하는 예제 입니다.

   

SQL>SELECT empno,ename,sal,deptno

FROM emp

WHERE sal IN (SELECT MAX(sal)

FROM emp

GROUP BY deptno);

 

EMPNO ENAME SAL DEPTNO

---------- ---------- ---------- ----------

7698 BLAKE 2850 30

7788 SCOTT 3000 20

7902 FORD 3000 20

7839 KING 5000 10

   

ANY 연산자 사용 에제

- ANY연산자는 서브쿼리의 결과값중 어느 하나의 값이라도
만족이 되면 결과값을 반환 합니다.

   

SQL>SELECT ename, sal

FROM emp

WHERE deptno != 20

AND sal > ANY(SELECT sal
FROM emp
WHERE job='SALESMAN');

   

ENAME SAL

---------- ----------

ALLEN 1600

BLAKE 2850

CLARK 2450

KING 5000

TURNER 1500

MILLER 1300

   

6 개의 행이 선택되었습니다.

   

ALL 연산자 사용 예제

- ALL연산자는 서브쿼리의 결과값중 모든 결과 값이
만족 되야만 결과값을 반환 합니다.

   

SQL>SELECT ename, sal

FROM emp

WHERE deptno != 20

AND sal > ALL(SELECT sal
FROM emp
WHERE job='SALESMAN');

   

ENAME SAL

---------- ----------

BLAKE 2850

CLARK 2450

KING 5000

3 개의 행이 선택되었습니다.

   

EXISTS 연산자 사용 예제

- EXISTS 연산자를 사용하면 서브쿼리의 데이터가 존재하는가의
여부를 먼저 따져 존재하는 값들만을 결과로 반환해 줍니다.

- SUBQUERY에서 적어도 1개의 행을 RETURN하면 논리식은 참이고
그렇지 않으면 거짓 입니다.

   

예제)사원을 관리할 수 있는 사원의 정보를 보여 줍니다.

   

SELECT empno, ename, sal

FROM emp e

WHERE EXISTS (SELECT empno
FROM emp
WHERE e.empno = mgr)

   

EMPNO ENAME SAL

---------- ---------- ----------

7566 JONES 2975

7698 BLAKE 2850

7782 CLARK 2450

7788 SCOTT 3000

7839 KING 5000

7902 FORD 3000

   

6 개의 행이 선택되었습니다.

   

사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

'DB - ORACLE > Oracle DB Admin ' 카테고리의 다른 글

오라클 집합쿼리  (0) 2016.01.03
오라클 다중 열 서브쿼리  (0) 2016.01.03
오라클 단일 행 서브쿼리  (0) 2016.01.03
오라클 그룹 함수  (0) 2016.01.03
오라클 보안  (0) 2016.01.03

+ Recent posts