SQL 교집합, 차집합, 합집합
SQL 교집합, 차집합, 합집합
(1) A ∩ B (INTERSECT 연산자 사용)
SELECT * FROM member_A
INTERSECT
SELECT * FROM member_B
(2) A - B (MINUS 연산자 또는 EXCEPT 연산자 사용)
SELECT * FROM member_A
MINUS
SELECT * FROM member_B
(3) B - A (MINUS 연산자 또는 EXCEPT 연산자 사용)
SELECT * FROM member_B
MINUS
SELECT * FROM member_A
(4) A U B (UNION 연산자 사용)
SELECT * FROM member_A
UNION
SELECT * FROM member_B
=============================================
LEFT OUTER JOIN : 차집합
RIGHT OUTER JOIN : 차집합
INNER JOIN : 교집합
UNION : 합집합
1. 차집합
SELECT
o.id AS old_id,
o.name AS old_name,
n.id AS new_id,
n.name AS new_name
FROM item AS o LEFT OUTER JOIN item_new
ON o.name = n.name ;
2. 교집합
SELECT
o.id AS old_id,
o.name AS old_name,
n.id AS new_id,
n.name AS new_name
FROM item AS o INNER JOIN item_new
ON o.name = n.name ;
3. 합집합
SELECT (id, name) from item
UNION
SELECT (id, name) from item_new
## distinct 도 자동으로 됨.
id | name |
1 | 상품1 |
2 | 상품2 |
3 | 상품3 |
4 | 상품4 |
## distinct 로 인한 정보 누락 시에는 UNION ALL사용
UNION ALL은 UNION처럼 두 테이블의 합집합을 보여준다는 점은 같습니다. 하지만 겹치는 것을 중복 제거하지 않고, 겹치는 것들을 그대로 둘다 보여준다는 차이점이 있죠.