[Oracle] Set Operator(여러 select를 한번에 출력)
Set Operator
UNION
- 합집합을 구한다.
- 중복제거
- Sort된 상태로 나온다.
UNION ALL
- 합집합을 구한다.
- 중복된 값도 출력한다.
- Sort된 상태가 아니다.
INTERSECT
- 교집합을 구한다.
MINUS
- 차집합을 구한다.
* Set Operators를 사용하면 각 select문이 따로 실행된 후에 마지막에 UNION ALL이 실행된다.
따라서 join과는 다르다.
SELECT last_name NAME
FROM s_emp
UNION
SELECT name FROM s_customer;
해설 : 회사의 사원이름과 고객이름을 출력한다.
SELECT id, last_name
FROM s_emp
WHERE id IN ( SELECT id
FROM s_emp
INTERSECT
SELECT sales_rep_id
FROM s_customer);
해설 : 고객을 담당하고 있는 사원의 사번과 이름을 출력한다.
SELECT id, last_name
FROM s_emp
WHERE id IN ( SELECT id
FROM s_emp
MINUS
SELECT sales_rep_id
FROM s_customer);
해설 : 고객을 담당하고 있지 않은 사원의 사번과 이름을 출력
* Set Operators를 사용할 때에는 대응되는 data의 개수가 같고 type이 유사해야 한다.
SELECT id
FROM s_emp
UNION
SELECT name
FROM s_customer
위 query문은 error가 발생한다.