-
[SQL] FROM 콤마(,)와 INNER JOIN의 차이점DataBase 2023. 2. 1. 19:14
SQL에서 두 개 이상의 테이블을 동시에 다루고자 할 때,
콤마(,)와 inner join은 기능적으로 동일하다.
둘 다 Cartesian Product을 수행하기 때문이다. 즉, 첫번째 테이블의 모든 열은 두번째 테이블의 모든 열과 join 된다.
Cartesian Product 다만, 콤마는 join에 비해 우선순위가 낮아 다른 join과 함께 사용 시 Unknown column 'col_name' in 'on clause' 에러가 발생할 수 있다.
예) 아래와 같은 SQL문이 있을 때, 마지막 줄은 (t1, (t2 JOIN t3 ON (t1.i1 = t3.i3)))로 처리되기 때문에 t2와 t3를 조인하는데 t1.i1을 찾는 꼴이 되면서 Unknown column 't1.i1' in 'on clause'를 발생시킨다.
CREATE TABLE t1 (i1 INT, j1 INT); CREATE TABLE t2 (i2 INT, j2 INT); CREATE TABLE t3 (i3 INT, j3 INT); INSERT INTO t1 VALUES(1, 1); INSERT INTO t2 VALUES(1, 1); INSERT INTO t3 VALUES(1, 1); SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);