[Oracle] 오라클 INTERSECT 사용법 (교집합, 중복값)
- 데이터베이스/오라클
- 2022. 7. 19.
오라클에서 서로 다른 쿼리문에서 중복 값이 제거된 교집합 데이터를 조회하기 위해서는 INTERSECT 연산자를 사용하면 된다. 자주 사용하는 UNION ALL과 사용법은 비슷하지만 UNION ALL은 합집합을 반환하는 반면 INTERSECT는 쿼리 문의 데이터가 서로 겹치는 교집합의 데이터가 반환된다.
목차 |
INTERSECT 기본 사용법
SELECT empno, ename, job, deptno
FROM emp
WHERE sal > 2500
INTERSECT
SELECT empno, ename, job, deptno
FROM emp
WHERE deptno = 20
INTERSECT 연산자를 사용하여 쿼리문을 위아래로 연결하면 된다.
연결된 쿼리문은 칼럼 개수와 데이터 유형이 동일해야 오류가 발생하지 않는다.
연결된 두 개의 쿼리문에서 동일하게 존재하는 데이터만 조회된다.
INTERSECT를 여러 번 사용하는 방법
SELECT empno, ename, job, deptno
FROM emp
WHERE sal > 2500
INTERSECT
SELECT empno, ename, job, deptno
FROM emp
WHERE deptno = 20
INTERSECT
SELECT empno, ename, job, deptno
FROM emp
WHERE job = 'ANALYST'
INTERSECT 연산자를 여러 번 사용해서 쿼리 문의 여러 개 연결할 수 있다.
연결된 쿼리문에서 모두 존재하는 데이터만 최종적으로 조회된다.
INTERSECT는 중복이 제거된 교집합을 반환
SELECT a.deptno, b.dname
FROM emp a, dept b
WHERE a.sal > 2500
AND a.deptno = b.deptno
INTERSECT
SELECT deptno, dname
FROM dept
WHERE deptno IN (20, 30)
INTERSECT 연산자는 교집합 데이터에서 중복을 제거하고 조회된다.
RESEARCH(20) 부서가 여러 건 조회되었지만 중복이 제거된 후 1건의 데이터만 조회된다.
정렬방법(ORDER BY)과 사용 시 주의사항은 UNION ALL과 동일하므로 아래의 포스팅을 참고하면 된다.