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;