data engineering

mysql join.

qkqhxla1 2019. 6. 1. 18:18

종종 헷갈려서 적어놓음.


http://www.mysqltutorial.org/mysql-join/ 정리.

INSERT INTO t1(id, pattern)
VALUES(1,'Divot'),
      (2,'Brick'),
      (3,'Grid');
 
INSERT INTO t2(id, pattern)
VALUES('A','Brick'),
      ('B','Grid'),
      ('C','Diamond');

예시를 들 테이블은 이런 구조.


1. cross join. 

두 모든 테이블의 결과를 cross로 가져옴. N * N의 컬럼 갯수가 나옴.

SELECT 
    t1.id, t2.id
FROM
    t1
CROSS JOIN t2;


2. inner join. 

두 모든 테이블의 결과중 교집합만 가져옴.

SELECT 
    t1.id, t2.id
FROM
    t1
        INNER JOIN
    t2 ON t1.pattern = t2.pattern;


3. left join.

두 테이블중 왼쪽에 있는 테이블이 기준. 왼쪽의 테이블은 다 가져오고 오른쪽의 테이블은 교집합은 가져오고, 교집합이 아니면 null로 가져옴.

SELECT 
    t1.id, t2.id
FROM
    t1
        LEFT JOIN
    t2 ON t1.pattern = t2.pattern
ORDER BY t1.id;

4. right join.

left join과 반대. 

SELECT 
    t1.id, t2.id
FROM
    t1
        RIGHT JOIN
    t2 on t1.pattern = t2.pattern
ORDER BY t2.id;