반응형

UNION

UNION은 두개 이상의 쿼리 결과를 결합하는데 사용된다. 모든 SELECT문은 같은 숫자의 열을 가져야 하고, 유사한 데이터 형식이어야 하며, 같은 순서로 열이 구성되어야 한다. 기본적인 형식은 다음과 같다.

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION은 기본적으로 중복을 제거한다. 만약 중복된 것까지 포함하고 싶다면 UNION ALL을 사용하자.

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

INTERSECT

INTERSECT는 이름처럼 교집합이기 때문에 INNER JOIN과 유사하나, 각 쿼리에서 반환한 결과에서 중복을 제외한다. 기본적인 형식은 다음과 같다.

SELECT column_name(s) FROM table1
INTERSECT
SELECT column_name(s) FROM table2;

EXCEPT

EXCEPT는 한 쿼리(A)에는 있지만 다른 쿼리(B)에는 없는 것을 반환한다. 위와 동일하게 중복값은 제외한다. 기본적인 형식은 다음과 같다.

SELECT column_name(s) FROM table1
EXCEPT
SELECT column_name(s) FROM table2;

전체 정리

위 내용들을 일반화하면 아래와 같이 정리할 수 있다.

query_block [set_op query_block] [set_op query_block] ...

query_block:
    SELECT | TABLE | VALUES

set_op:
    UNION | INTERSECT | EXCEPT

참고자료

  1. W3 School Tutorial
  2. MySQL Documentation
반응형