[sql] INTERSECT 연산자를 사용한 다중 테이블 조인 방법

보통 SQL에서 다중 테이블 조인을 수행할 때는 JOIN 절을 사용합니다. 그러나 때로는 특정 조건을 충족하는 공통된 행들만을 가져오고 싶을 때가 있습니다. 이때 INTERSECT 연산자를 사용하면 편리하게 공통된 행들을 가져올 수 있습니다.

INTERSECT 연산자란?

INTERSECT 연산자는 두 개 이상의 SELECT 문의 결과에서 공통된 행들을 반환하는 연산자입니다. 즉, 다중 테이블의 조인을 수행하고자 할 때, 결과의 교집합을 구합니다.

INTERSECT 연산자 사용하기

INTERSECT 연산자를 사용하려면 다음과 같은 조건을 충족해야 합니다.

  1. SELECT 문의 열의 수와 데이터 유형이 일치해야 합니다.
  2. SELECT 문의 순서도 일치해야 합니다.

다음은 INTERSECT 연산자를 사용하여 다중 테이블 조인을 수행하는 예제입니다.

SELECT column1, column2, ...
FROM table1
WHERE condition1
INTERSECT
SELECT column1, column2, ...
FROM table2
WHERE condition2

위의 예제에서 table1table2는 조인하고자 하는 테이블이며, column1, column2, ...은 가져오려는 열입니다. condition1condition2는 필요에 따라 추가할 수 있는 조건입니다.

예제

다음은 customersorders 두 개의 테이블을 조인하여 주문을 한 고객의 이름과 주문 번호를 가져오는 예제입니다.

SELECT customer_name, order_number
FROM customers
WHERE customer_id > 100
INTERSECT
SELECT customer_name, order_number
FROM orders
WHERE order_date > '2022-01-01'

위의 예제에서는 customersorders 테이블을 customer_idorder_date를 기준으로 조인하고, customer_nameorder_number를 반환합니다. 조인 조건은 각각 customer_id > 100order_date > '2022-01-01'입니다.

참고 자료

위의 참고 자료는 Oracle과 SQL Server의 공식 문서입니다. 다양한 데이터베이스 관리 시스템에서 INTERSECT 연산자를 지원하므로, 해당 데이터베이스의 문서를 참고하여 자세한 사용법을 확인할 수 있습니다.