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
id | name | manager_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;
쿼리 결과:
employee | manager |
---|---|
김지영 | NULL |
이민수 | 김지영 |
박수진 | 김지영 |
최현우 | 이민수 |
같은 테이블을 서로 다른 역할로 구분하기 위해
employees
와managers
라는 별칭을 사용했습니다.
CROSS JOIN & SELF JOIN은 어떠한 경우에 사용될까요?
이런 상황에서 사용하세요.
- 일정/대진표 구성 (CROSS JOIN)
- 계층적 관계 모델링 (SELF JOIN)
- 같은 테이블 내 행들 비교
Quiz
0 / 1
SQL에서 CROSS JOIN은 두 테이블의 카르테시안 곱을 반환하여, 두 테이블 사이의 모든 가능한 행 쌍을 생성합니다.
○
✕
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
코드 실행
코드 생성
DB 테이블 구조
실행 결과