[얄코] Section 2-3. SELECT 더 깊이 파보기 (UNION - 집합으로 다루기)
2023. 4. 18. 16:25ㆍDatabase/갖고노는 MySQL 데이터베이스
연산자 | 설명 |
UNION | 중복을 제거한 집합 |
UNION ALL | 중복을 제거하지 않은 집합 |
SELECT CustomerName AS Name, City, Country, 'CUSTOMER'
FROM Customers
UNION
SELECT SupplierName AS Name, City, Country, 'SUPPLIER'
FROM Suppliers
ORDER BY Name;
합집합
SELECT CategoryID AS ID FROM Categories
WHERE CategoryID > 4
UNION
SELECT EmployeeID AS ID FROM Employees
WHERE EmployeeID % 2 = 0;
-- UNION ALL로 바꿔볼 것
UNION
UNION ALL
교집합
SELECT CategoryID AS ID
FROM Categories C, Employees E
WHERE
C.CategoryID > 4
AND E.EmployeeID % 2 = 0
AND C.CategoryID = E.EmployeeID;
차집합
SELECT CategoryID AS ID
FROM Categories
WHERE
CategoryID > 4
AND CategoryID NOT IN (
SELECT EmployeeID
FROM Employees
WHERE EmployeeID % 2 = 0
);
대칭차집합
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;
Temp는 쓰이지는 않지만, 꼭 이름을 입력해줘야한다!
여러가지 방법으로 나타낼 수 있지만,
여기서는 union all인 경우면 교집합인 부분이 두개가 나타남으로, 하나만 count되는 것만 출력해내서 결과값을 도출해낸다.
출처 : https://www.yalco.kr/@sql/2-3/
UNION - 집합으로 다루기
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
'Database > 갖고노는 MySQL 데이터베이스' 카테고리의 다른 글
[얄코] Section 3-2. 데이터 조작하기 (테이블 만들고 데이터 입력하기) (0) | 2023.04.19 |
---|---|
[얄코] Section 3-1. 데이터 조작하기 (MySQL 설치하기) (0) | 2023.04.19 |
[얄코] Section 2-2. SELECT 더 깊이 파보기 (JOIN - 여러 테이블 조립하기) (0) | 2023.04.18 |
[얄코] Section 2-1. SELECT 더 깊이 파보기 (쿼리 안에 서브쿼리) (2) | 2023.04.18 |
[얄코] Section 1-5. SELECT 기초 - 원하는 정보 찾기 (조건에 따라 그룹으로 묶기) (0) | 2023.04.17 |