JOIN
(Merge)SELECT 주문.*, 사용자.name
FROM data.orders AS 주문
JOIN data.users AS 사용자
ON 주문.order_id = 사용자.order_id
ON 이 JOIN되는 조건. order_id가 같을때 JOIN 해!
SELECT O.*, P.category, P.name
FROM data_pre.orders O
JOIN data_pre.products P
ON O.product_id = P.product_id
JOIN data_pre.users U
엑셀의 V-lookup과 굉장히 흡사하구나...!!
JOIN
의 종류SELECT
FROM table1
JOIN table2
또는
SELECT
FROM table1
INNER JOIN table2
SELECT
FROM table1
FULL JOIN table2
또는
SELECT
FROM table1
FULL OUTER JOIN table2
SELECT
FROM table1
LEFT JOIN table2
또는
SELECT
FROM table1
LEFT OUTER JOIN table2
SELECT
FROM table1
RIGHT JOIN table2
또는
SELECT
FROM table1
RIGHT OUTER JOIN table2
ON
과 WHERE
의 차이SELECT o.*, p.category,p.name
FROM `orders` o LEFT JOIN `products` p
ON o.product_id = p.product_id
AND p.category = "Furniture"
ON절은 JOIN전에 실행되기때문에 category가 Furniture인것만 join되었음
SELECT o.*, p.category,p.name
FROM `orders` o LEFT JOIN `products` p
ON o.product_id = p.product_id
WHERE p.category = "Furniture"
WHERE절은 JOIN이후에 실행되기 때문에 Null없이 Furniture인 값만 필터링해서 보여줌. row가 줄었음
JOIN을 할 때엔 내가 필요한 테이블을 잘 고려해서 사용해야합니다!
UNION
JOIN은 로우에 대해 더 깊게 아는것, UNION은 더 넓은 로우를 알수 있게 하는것...? 정도일까?
SELECT *
FROM table1
UNION ALL ---UNION DISTINCT를 쓰면 중복을 제거해줌
SELECT *
FROM table2
SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
UNION ALL
SELECT *
FROM table3