Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 조인(JOIN)으로 테이블 간 INTERSECTION(교집합) 구현하기

MySQL에서 조인을 활용한 INTERSECTION 구현 방법

사실 SQL의 INTERSECTION(교집합)은 모든 열을 기준으로 수행하는 내부 조인(Inner Join)과 본질적으로 동일합니다. MySQL에는 INTERSECT 연산자가 기본적으로 제공되지 않기 때문에, JOIN을 활용하면 같은 결과를 손쉽게 얻을 수 있습니다.

다음과 같은 데이터를 가진 두 개의 간단한 테이블을 예로 들어 살펴보겠습니다.

mysql> Select * from value1;
+------+------+
| i    | j    |
+------+------+
| 1    | 1    |
| 2    | 2    |
+------+------+
2 rows in set (0.00 sec)

mysql> Select * from value2;
+------+------+
| i    | j    |
+------+------+
| 1    | 1    |
| 3    | 3    |
+------+------+
2 rows in set (0.00 sec)

위 예제에서 value1 테이블에는 (1,1)과 (2,2)라는 두 행이 있고, value2 테이블에는 (1,1)과 (3,3)이라는 두 행이 있습니다.

JOIN을 이용한 교집합 조회

이제 아래와 같이 USING 절과 함께 JOIN 쿼리를 작성하면 두 테이블 간의 교집합을 구할 수 있습니다.

mysql> Select * from value1 join value2 using(i,j);
+------+------+
| i    | j    |
+------+------+
| 1    | 1    |
+------+------+
1 row in set (0.08 sec)

실행 결과를 보면 두 테이블에 공통으로 존재하는 행인 (1, 1)만 반환된 것을 확인할 수 있습니다. 이는 집합 연산의 INTERSECTION과 정확히 같은 결과입니다.

정리

MySQL에서 INTERSECTION이 필요할 때는 모든 비교 대상 열을 조건으로 하는 INNER JOIN을 사용하면 됩니다. 특히 USING(i, j)처럼 공통 열 이름을 지정하면 코드가 더 간결해지며, 중복 없는 순수한 교집합 결과를 얻을 수 있습니다.