문제
아래 두 테이블에서 LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, INNER JOIN을 각각 수행하여 생성되는 행 수의 총합을 구하라.
<데이터>
| TAB1 | TAB2 |
|---|---|
| A | E |
| B | F |
| C | D |
| G | G |
<조건> TAB1.COL = TAB2.COL 조건으로 조인한다.
① 14개 ② 15개 ③ 16개 ④ 17개
정답
3번
해설
정답: 3. INNER JOIN은 G만 매칭되어 1건, LEFT JOIN은 TAB1 기준 4건(매칭 1 + TAB1 미매칭 A,B,C 3건), RIGHT JOIN은 TAB2 기준 4건(매칭 1 + TAB2 미매칭 E,F,D 3건), FULL OUTER JOIN은 매칭 1건 + TAB1 미매칭 A,B,C 3건 + TAB2 미매칭 E,F,D 3건 = 7건이므로 합계는 1 + 4 + 4 + 7 = 16건이다.
오답 풀이
- 1번: 일부 JOIN의 건수를 과소 계산한 값이다.
- 2번: FULL OUTER JOIN을 6건으로 잘못 계산한 값이다.
- 3번: 1 + 4 + 4 + 7 = 16으로 옳다.
- 4번: 매칭 행이나 미매칭 행을 과대 계산한 값이다.
보충 개념 LEFT JOIN은 왼쪽 테이블의 모든 행을 보존하고, RIGHT JOIN은 오른쪽 테이블의 모든 행을 보존한다. FULL OUTER JOIN은 양쪽 미매칭 행을 모두 포함하므로 매칭된 행 수에 양쪽 미매칭 행 수를 더한 값이 된다.