Backend/SQL(Mariadb_ver) 및 DB
Union ALL 사용하여 테이블 2개 결과값 한번에 보여주기
amelia-suyeon
2024. 2. 4. 15:43
필자는 간단하게, 각각의 테이블에서 집계를 한 결과를 한번의 결과로 보여주는 쿼리가 필요하게 되었다.
보통 join이 가능하면, Left join을 많이사용하지만, key값이 없는 관계로 union all을 사용했다.
여기서! union all vs union의 차이를 말하자면 간단하다.
- union all : 중복되는 결과 값이 있더라도 다 보여주기
- union : 중복되는 결과 값을 제거하고 보여주기
이제, 아래 쿼리를 보자
SELECT *
FROM (
SELECT *
FROM test.al_batch_table
WHERE substr(save_dt, 1, 10) BETWEEN '2024-01-30' AND '2024-01-30'
AND region = 'a' AND area = '1'
) as basic_result
UNION ALL
SELECT *
FROM (
SELECT *
FROM test.cd_batch_table
WHERE substr(save_dt, 1, 10) BETWEEN '2024-01-30' AND '2024-01-30'
AND region = 'a' AND area = '1'
) AS cd_result
ORDER BY save_dt DESC;
basic_result와 cd_result에서 보려고 하는건 == 같은날짜, 같은 구역의 값이다.
애초에 테이블이 다르기 때문에, 겹치는 결과가 존재할 수 없기에, union all을 사용하였다.
위 처럼 쿼리를 수행하면, 아래와 같이 두 테이블의 결과가 합쳐진 상태로 나온다!
위와 같이 union all 을 바탕으로 다른 포스팅에서는 with절 여러개와 함께 사용하는 것을 올리도록 하겠다.