DB/SQL

[세무민의 코딩일기] mysql로 Union 사용하기

세기루민 2021. 12. 21. 21:27
728x90

이번 포스팅에서 다뤄볼 내용은 DB에서 쿼리 조합할때 자주 사용하는 Union에 대해서 다뤄보겠습니다.

 

UNION

Union이란 2개의 쿼리 결과를 행으로 합치는 것을 말합니다. 

위의 그림처럼 2개의 조회 결과를 한개의 행으로 결과를 합치는 것을 말합니다.

SELECT A 구문
UNION
SELECT B 구문

Ex)
select title, contents from noticeboard
union
select title, urlroot from myService;

쿼리대로 조회한 결과가 위의 그림입니다.

UNION 조건

UNION을 사용할 때 조건이 존재하는데 조회하는 문장의 열의 개수와 데이터의 형식이 같아야 조회가 가능합니다.

 

UNION ALL

 

UNION과 UNION ALL의 차이는 중복값의 차이이다. 

UNION은 중복된 값은 조회하지 않으나 UNION ALL은 중복값을 모두 조회한다. 

마치 UNION ALL은 DISTINCT의 역할을 한다고 보면 이해하기 쉽다. 

noticeboard 테이블의 조회 결과는 위와 같다고 가정할 때 

위의 결과와 같다. 

조건과 상황에 따라서 union과 union all을 구분해서 사용하는것이 좋다.

 


UNION을 너무 자주 사용하게 되면 조회 속도가 느려질 수 있기 때문에 UNION의 사용은 테이블 사이에 조인을 걸 수

없을 때 사용하는걸 추천한다. 

만약 JOIN을 하여 테이블 간 연결하여 데이터 조회가 가능하다면 UNION보단 쿼리 튜닝하는 것을 추천한다.

 

 

728x90