본문으로 건너뛰기
실습하기

CROSS JOIN & SELF JOIN

SQL에는 특정 상황에서 강력한 고급 Join 유형들이 있습니다.

  • CROSS JOIN은 두 테이블 사이의 가능한 모든 행 쌍을 반환합니다
  • SELF JOIN은 같은 테이블을 자기 자신과 Join하여 테이블 내부의 행을 비교하거나 연관시킵니다

CROSS JOIN

CROSS JOIN은 두 테이블의 모든 행 조합, 즉 데카르트 곱을 반환합니다. 첫 번째 테이블의 각 행이 두 번째 테이블의 모든 행과 결합됩니다.

CROSS JOIN
SELECT students.name, days.day
FROM students
CROSS JOIN days;

주의: 결과 행 수는 rows_in_students × rows_in_days와 같으며, 매우 빠르게 커질 수 있습니다!

이런 경우에 사용합니다.

  • 모든 가능한 조합 생성(예: 시간표, 조합)
  • 쌍별(pairwise) 비교 수행
  • 격자(grid)나 테스트 케이스 생성

SELF JOIN

SELF JOIN은 테이블을 자기 자신과 Join하는 것으로, 같은 테이블 내의 행들을 비교하거나 서로 연관시키는 데 유용합니다.

예시: 직원과 관리자

아래는 employees 테이블을 자기 자신과 SELF JOIN한 예시입니다.

employees

idnamemanager_id
1김지영NULL
2이민수1
3박수진1
4최현우2

각 직원의 관리자를 찾으려면 SELF JOIN을 사용합니다.

관리자를 찾는 SELF JOIN
SELECT employees.name AS employee, managers.name AS manager
FROM employees
LEFT JOIN employees AS managers
ON employees.manager_id = managers.id;

쿼리 결과:

employeemanager
김지영NULL
이민수김지영
박수진김지영
최현우이민수

같은 테이블을 서로 다른 역할로 구분하기 위해 employeesmanagers라는 별칭을 사용했습니다.


CROSS JOIN & SELF JOIN은 어떠한 경우에 사용될까요?

이런 상황에서 사용하세요.

  • 일정/대진표 구성 (CROSS JOIN)
  • 계층적 관계 모델링 (SELF JOIN)
  • 같은 테이블 내 행들 비교

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!