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절 여러개와 함께 사용하는 것을 올리도록 하겠다.