SQL[UNION]
UNION
SQL에서의 UNION은 두 개 이상의 SELECT문의 결과를 결합하는 데 사용되는 연산자입니다.
이와 비슷한 SQL문이 있는데 바로 JOIN입니다.
JOIN은 집합, 즉 두 컬럼의 겹치는 부분만 결과로 도출하는데, UNION은 두 컬럼의 결과를 합쳐서 도출한다는 점이 차이점입니다.
UNION은 기본적으로 중복 행을 자동으로 제거하는 특징이 있습니다.
만약에 중복된 행이 필요하거나 유지하고 싶을 때에는 UNION ALL이라는 명령어를 사용하면 됩니다.
SQL코드 예시 [ 프로그래머스 SQL 고득점 KIT 문제]
1
2
3
4
5
6
7
8
9
10
11
12
SELECT *
FROM(
SELECT DATE_FORMAT(ONL.SALES_DATE,'%Y-%m-%d') AS SALES_DATE, ONL.PRODUCT_ID, ONL.USER_ID , ONL.SALES_AMOUNT
FROM ONLINE_SALE ONL
WHERE DATE_FORMAT(ONL.SALES_DATE,'%Y-%m-%d') BETWEEN "2022-03-01" AND "2022-03-31"
UNION ALL
SELECT DATE_FORMAT(OFFL.SALES_DATE,'%Y-%m-%d'), OFFL.PRODUCT_ID, NULL AS USER_ID , OFFL.SALES_AMOUNT
FROM OFFLINE_SALE OFFL
WHERE DATE_FORMAT(OFFL.SALES_DATE,'%Y-%m-%d') BETWEEN "2022-03-01" AND "2022-03-31"
)
AS T
ORDER BY T.SALES_DATE ASC, T.PRODUCT_ID ASC, T.USER_ID ASC
위의 SQL문은 서브쿼리 + UNION을 조합한 SQL 쿼리문입니다.
UNION은 두개의 SELECT절 사이에 위치하게 됩니다.
참고로 여기에서는 중복된 행이 필요하기 때문에 UNION ALL이라는 명령어를 사용하였습니다.
This post is licensed under CC BY 4.0 by the author.