종종 헷갈려서 적어놓음.
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;
'data engineering' 카테고리의 다른 글
docker 동작 기본, 알아둘것 (0) | 2019.06.14 |
---|---|
mysql partitioning, index (0) | 2019.06.08 |
mongodb make index background, cancel making index (0) | 2019.04.19 |
apache airflow tutorial. (0) | 2019.03.24 |
python으로 hive의 쿼리 자동화하기. (0) | 2019.03.13 |