반응형
* 서브 쿼리의 종류 2가지
1. 단일행 서브쿼리 : 서브쿼리에서 메인 쿼리로 하나의 값이 리턴되는 경우
- 연산자 : = , >, <, >=, <=, !=, <>, ^=
2. 다중행 서브쿼리 : 서브쿼리에서 메인 쿼리로 여러 개의 값이 리턴되는 경우
- 연산자 : IN, NOT IN, > ALL, < ALL, > ANY, < ANY
* 주의사항 :
단일, 다중 간 연산자 섞어 써도 결과가 출력되는 경우도 있음.
하지만 oracle이 자체적으로 적절한 연산자로 변경해주는 과정을 한 번 거치게 되므로, 작성 시에 올바른 연산자를 쓰는 것이 좋다.
예제. 사원번호가 7788, 7902, 7369번인 사원의 사원번호, 이름을 출력하시오.
SELECT empno, ename
FROM emp
WHERE empno IN (7788, 7902, 7369);
예제. 이름이 SCOTT인 사원과 월급이 같은 사원들의 이름과 월급을 출력하시오.
SELECT ename, sal
FROM emp
WHERE sal = (SELECT sal
FROM emp
WHERE ename = 'SCOTT')
AND ename != 'SCOTT';
예제. 직업이 SALESMAN인 사원들과 월급이 같은 사원들의 이름과 월급을 출력하시오.
SELECT ename, sal
FROM emp
WHERE sal IN (SELECT sal
FROM emp
WHERE JOB = 'SALESMAN')
AND JOB != 'SALESMAN';
틀린 것 아님. salesman들과 월급 같은 사원들이 없어서 출력결과가 없는 것.
'Oracle DBA > SQL' 카테고리의 다른 글
추가 : 서브쿼리 사용하기 3 (다중열 서브쿼리) + unpair, pairwise (0) | 2023.07.04 |
---|---|
073 서브 쿼리 사용하기 3(NOT IN) (0) | 2023.07.04 |
071 서브 쿼리 사용하기 1(단일행 서브쿼리) (0) | 2023.07.04 |
070 집합 연산자로 데이터의 차이를 출력하기(MINUS) (0) | 2023.07.04 |
069 집합 연산자로 데이터의 교집합을 출력하기(INTERSECT) (0) | 2023.07.04 |