MySQL에서 교차 조인(CROSS JOIN) 쿼리는 JOIN 키워드를 사용해서도 작성할 수 있습니다. 일반적으로 교차 조인은 CROSS JOIN 키워드를 명시적으로 사용하지만, JOIN 키워드 뒤에 ON 절이나 WHERE 같은 조건 없이 두 테이블을 단순히 나열하면 MySQL은 이를 교차 조인으로 해석하여 두 테이블의 모든 행 조합, 즉 카테시안 곱(Cartesian Product)을 반환합니다.
예제 테이블 준비
개념을 쉽게 이해하기 위해 다음과 같은 데이터를 가진 두 개의 테이블, tbl_1과 tbl_2를 예로 들어 보겠습니다.
mysql> Select * from tbl_1; +----+--------+ | Id | Name | +----+--------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Raman | | 4 | Aarav | +----+--------+ 4 rows in set (0.00 sec) mysql> Select * from tbl_2; +----+---------+ | Id | Name | +----+---------+ | A | Aarav | | B | Mohan | | C | Jai | | D | Harshit | +----+---------+ 4 rows in set (0.00 sec)
JOIN 키워드를 사용한 교차 조인 쿼리
아래 쿼리는 JOIN 키워드만 사용하여 두 테이블을 교차 조인하는 예입니다.
mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2; +----+----+ | id | id | +----+----+ | 1 | A | | 2 | A | | 3 | A | | 4 | A | | 1 | B | | 2 | B | | 3 | B | | 4 | B | | 1 | C | | 2 | C | | 3 | C | | 4 | C | | 1 | D | | 2 | D | | 3 | D | | 4 | D | +----+----+ 16 rows in set (0.00 sec)
결과 분석
실행 결과를 살펴보면 tbl_1의 각 행(4개)이 tbl_2의 모든 행(4개)과 한 번씩 결합되어 총 16개(4 × 4)의 행이 반환된 것을 확인할 수 있습니다. 이 결과는 CROSS JOIN 키워드를 명시적으로 사용했을 때와 완전히 동일하며, 조건이 지정되지 않은 JOIN은 곧 교차 조인으로 동작한다는 것을 보여줍니다.