개발/데이터베이스

[PostgreSQL] UNION, INTERSECT, EXCEPT

고등어찌짐 2022. 4. 30. 10:19

 

UNION / UNION ALL

쿼리문 결과 row 들을 모두 합쳐서 출력한다. 이 때, UNION ALL 은 중복 상관하지 않고 모두 합쳐서 출려하고 UNION 은 중복 여부를 체크해 출력한다. 

(SELECT 컬럼명 from 테이블명)
UNION
(SELECT 컬럼명 from 테이블명);

(SELECT 컬럼명 from 테이블명)
UNION ALL
(SELECT 컬럼명 from 테이블명);

 

INTERSECT / INTERSECT ALL

중복되는 결과를 출력해주는 명령이이다. INTERSECT 를 하면 중복을 제거해서 중복 결과를 출력하고, INTERSECT ALL 은 중복 제거 없이 중복되는 결과를 모두 출력한다. 

(SELECT 컬럼명 FROM 테이블명)
INTERSECT
(SELECT 컬럼명 FROM 테이블명);

(SELECT 컬럼명 FROM 테이블명)
INTERSECT ALL
(SELECT 컬럼명 FROM 테이블명);

 

EXCEPT, EXCEPT ALL

A EXCEPT B 라고 할 때, A 집합에서 A 와 B 의 교집합 부분을 제외한 여집합 부분만 출력하는 쿼리를 의미한다. 이때 EXCEPT 을 사용하면 중복되는 결과값은 모두 제거하고 출력하고, EXCEPT ALL 을 사용하면 중복되는 결과도 포함해 출력한다. 

(SELECT 컬럼명 FROM 테이블명)
EXCEPT
(SELECT 컬럼명 FROM 테이블명);

(SELECT 컬럼명 FROM 테이블명)
EXCEPT ALL
(SELECT 컬럼명 FROM 테이블명);