문제
다음 세 개의 SQL 중에서 결과가 다를 수 있는 것으로 가장 적절한 것은?
-- SQL A
SQLSELECT * FROM T1 JOIN T2 ON T1.ID = T2.ID JOIN T3 ON T2.VAL = T3.VAL;
-- SQL B
SQLSELECT * FROM T1 JOIN T2 ON T1.ID = T2.ID JOIN T3 ON T1.ID = T3.ID;
-- SQL C
SQLSELECT * FROM (T1 JOIN T2 ON T1.ID = T2.ID) JOIN T3 ON T2.VAL = T3.VAL;
① A와 B만 다를 수 있다 ② A와 C는 항상 동일하다 ③ B만 다른 결과를 가질 수 있다 ④ 세 SQL 모두 항상 동일한 결과를 가진다
정답
1번
해설
① A와 C는 동일한 결과(T2.VAL = T3.VAL 조건 사용)이지만, B는 다른 조인 조건(T1.ID = T3.ID)을 사용하므로 결과가 다를 수 있다. SQL A와 C는 T1-T2 조인 후 T2의 VAL 값으로 T3와 조인하지만, SQL B는 T1의 ID 값으로 T3와 직접 조인한다. ② A와 C는 실제로 동일하다. ③ A와 C도 B와 다르다. ④ B는 다른 결과를 가질 수 있다.