ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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);

     

    Ref: https://dev.mysql.com/doc/refman/8.0/en/join.html

    댓글

Designed by Tistory.