UNION
JOIN과 UNION의 차이점을 알고 가야한다.
굉장히 쉽다.
JOIN은 수평결합. 새로운 칼럼으로 결합된다.
UNION은 수직결합. 새로운 테이블 하나가 붙는 것이다.

그냥 두 쿼리의 결과를 합쳐서 보여주는 것이다
UNION DISTINCT = 합친 후 중복 제거
UNION ALL = 그냥 합침 (중복제거 X)
UNION = UNION DISTINCT
그냥 UNION을 하게 되면 자동으로 DISTINCT가 붙어 중복제거를 해준다!
각 쿼리문은 MySQL 쿼리 실행 순서에 따라 구문들을 실행하고
맨 마지막에 UNION으로 결과가 합쳐지게 된다.
정상적으로 합치기 위해서 당연히 각 쿼리의 칼럼 갯수는 동일해야한다
칼럼명은 동일하지 않아도 돌아간다고 한다.
맨 첫번째 쿼리를 기준으로 UNION 결과 테이블의 칼럼명이 정해진다.
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '3'
UNION
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '3'
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
https://school.programmers.co.kr/learn/courses/30/lessons/131537
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
SELECT
'Low Salary' as category,
COUNT(*) AS accounts_count
FROM Accounts
WHERE income < 20000
UNION ALL
SELECT
'Average Salary' as category,
COUNT(*) AS accounts_count
FROM Accounts
WHERE income >= 20000 AND income <= 50000
UNION ALL
SELECT
'High Salary' as category,
COUNT(*) AS accounts_count
FROM Accounts
WHERE income > 50000
https://leetcode.com/problems/count-salary-categories/?envType=study-plan-v2&envId=top-sql-50
Count Salary Categories - LeetCode
Can you solve this real interview question? Count Salary Categories - Table: Accounts +-------------+------+ | Column Name | Type | +-------------+------+ | account_id | int | | income | int | +-------------+------+ account_id is the primary key (column wi
leetcode.com