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하는 것으로, 같은 테이블 내의 행들을 비교하거나 서로 연관시키는 데 유용합니다.