처음부터 차근차근

MySQL UNION - 집합으로 다루기 본문

DB/MySQL

MySQL UNION - 집합으로 다루기

HangJu_95 2023. 6. 2. 11:05
728x90

UNION 이란?? - 결과물 합치기 이다.

그림과 같이 위쪽은 JOIN이라면, 아래쪽은 UNION을 뜻한다.

 

UNION 중복을 제거한 집합
UNION ALL 중복을 제거하지 않은 집합

SELECT CustomerName AS Name, City, Country, 'CUSTOMER'
FROM Customers
UNION 
SELECT SupplierName AS Name, City, Country, 'SUPPLIER'
FROM Suppliers

 

두 Table을 위 아래로 합쳐준다.

 

1. 합집합 나타내기

 

SELECT CategoryID AS ID FROM Categories
WHERE CategoryID > 4
UNION
SELECT EmployeeID AS ID FROM Employees
WHERE EmployeeID % 2 = 0;

IF UNION ALL일 경우??

중복값을 표현

 

2. 교집합

SELECT CategoryID AS ID
FROM Categories C, Employees E
WHERE 
  C.CategoryID > 4
  AND E.EmployeeID % 2 = 0
  AND C.CategoryID = E.EmployeeID;

6,8이 겹치는 것을 알 수 있다.

 

3. 차집합

SELECT CategoryID AS ID
FROM Categories
WHERE 
  CategoryID > 4
  AND CategoryID NOT IN (
    SELECT EmployeeID
    FROM Employees
    WHERE EmployeeID % 2 = 0
  );

4. 대칭 차집합

SELECT ID FROM (
  SELECT CategoryID AS ID FROM Categories
  WHERE CategoryID > 4
  UNION ALL
  SELECT EmployeeID AS ID FROM Employees
  WHERE EmployeeID % 2 = 0
) AS Temp 
GROUP BY ID HAVING COUNT(*) = 1;

 

https://www.yalco.kr/@sql/2-3/

 

UNION - 집합으로 다루기

어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!

www.yalco.kr

 

'DB > MySQL' 카테고리의 다른 글

MySQL Join  (0) 2023.06.02
MySQL 쿼리 안에 서브쿼리  (0) 2023.06.01
MySQL 조건에 따라 그룹으로 묶기  (0) 2023.06.01
MySQL 시간/날짜 관련 및 기타 함수들  (1) 2023.06.01
숫자와 문자열을 다루는 함수들  (0) 2023.05.29