[Oracle] 오라클 INTERSECT 사용법 (교집합, 중복값)

오라클에서 서로 다른 쿼리문에서 중복 값이 제거된 교집합 데이터를 조회하기 위해서는 INTERSECT 연산자를 사용하면 된다. 자주 사용하는 UNION ALL과 사용법은 비슷하지만 UNION ALL은 합집합을 반환하는 반면 INTERSECT는 쿼리 문의 데이터가 서로 겹치는 교집합의 데이터가 반환된다.

 

오라클 INTERSECT 사용법

목차
  1. INTERSECT 기본 사용법
  2. INTERSECT를 여러 번 사용하는 방법
  3. 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건의 데이터만 조회된다.

 

예제쿼리(테이블포함).txt
0.00MB

 

정렬방법(ORDER BY)과 사용 시 주의사항은 UNION ALL과 동일하므로 아래의 포스팅을 참고하면 된다.

 

[오라클] UNION, UNION ALL 사용법 (합집합)

오라클에서 여러 개의 SELECT 문 결과를 합치기 위해서는 UNION, UNION ALL을 사용하면 된다. UNION을 사용할 경우 합쳐진 결과에서 중복을 제거한 결과를 반환하고, UNION ALL을 사용하면 중복을 제거하지

gent.tistory.com

 

[오라클] MINUS 사용법 (차집합)

오라클에서 MINUS 연산자를 사용하면 서로 다른 쿼리문에서 차집합의 데이터를 구할 수 있다. MINUS 연산자는 다른 데이터베이스의 EXCEPT 연산자와 비슷한 기능을 하며, 중복 값이 제거된 차집합 데

gent.tistory.com

 

 

댓글

Designed by JB FACTORY