UNION, INTERSECT, MINUS
UNION( 중복 제거 합집합 ), UNION ALL ( 중복 포함 합집합 )
UNION은 합집합을 의미 한다.
2개 이상의 테이블 조회 결과중 중복을 제외 하고 모두 출력 된다.
예제를 통해 이해를 돕도록 하겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80; |
[결과]
2 3 |
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
3 4 |
각각의 쿼리 실행의 결과가 (2,3), (3,4)입니다.
이것을 UNION을 이용해서 중복된 값을 제거 하고 조회 되도록 해보겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80 UNION SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
2 3 4 |
UNION을 사용하는 방법은 2개 이상의 데이터 조회 SELECT 구문 사이에 UNION 을 넣어 주면 된다.
[SELECT를 이용한 데이터 집합1] UNION [SELECT를 이용한 데이터 집합2] |
중복된 값을 제거 하지 않고 모두 표시 하고 싶을 때는 UNION ALL을 사용 한다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80 UNION ALL SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
2 3 3 4 |
UNION ALL을 사용하는 방법은 2개 이상의 데이터 조회 SELECT 구문 사이에 UNION ALL을 넣어 주면 된다.
[SELECT를 이용한 데이터 집합1] UNION ALL [SELECT를 이용한 데이터 집합2] |
INTERSECT(교집합)
INTERSECT은 교집합을 의미 한다.
2개 이상의 테이블 조회 결과중 중복 값만 출력 된다.
예제를 통해 이해를 돕도록 하겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80; |
[결과]
2 3 |
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
3 4 |
각각의 쿼리 실행의 결과가 (2,3), (3,4)입니다.
이것을 INTERSECT을 이용해서 중복된 값만 조회 되도록 해보겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80 INTERSECT SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
3 |
MINUS(차집합)
MINUS은 차집합을 의미 한다.
2개 이상의 테이블 조회 결과중 기준이 되는 테이블에서 나머지 테이블의 중복된 값을 제거하고 출력 된다.
예제를 통해 이해를 돕도록 하겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80; |
[결과]
2 3 |
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
3 4 |
각각의 쿼리 실행의 결과가 (2,3), (3,4)입니다.
이것을 MINUS을 이용해서 첫번째 테이블 결과중 두 번째 테이블과 중복값을 제거하고 조회 되도록 해보겠다.
SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE > 80 MINUS SELECT CLASS FROM TBL_REPORT_CARD WHERE SCORE < 30; |
[결과]
2 |
'인프라 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 뷰(VIEW) 생성, 삭제 (0) | 2016.12.17 |
---|---|
[Oracle] GROUP BY 절, HAVING 절 (0) | 2016.12.04 |
[Oracle] 표현식 Case~When~Then.. (0) | 2016.12.03 |
[Oracle] 시퀀스(Sequence) 사용법 (0) | 2016.11.29 |
[Oracle] 테이블스페이스(Table Space) 생성 (0) | 2016.11.27 |