2023. 5. 22. 09:43

UNION / UNION ALL

두 개 이상의 SQL 쿼리문을 합치는 방법에 대해 알아보자.

 

 부득이하게 여러개에 쿼리문을 사용하여 하나에 데이터로 출력해야되는 경우가 존재한다. 이럴 때 사용하는 방법이 바로 UNION 연산자이다.

 

 예제를 통해 빠르게 이해해보자. 아래는 예제 테이블 2개이다.

 

 예제 테이블 1

ID NAME
1 김서방
2 조서방

 

 예제 테이블 2

ID NAME
2 조서방
3 박서방

 

 예제 테이블 각각에 데이터가 들어있다. 예제 테이블들에 데이터를 추출해보자.

 

 SELECT ID, NAME FROM TABLE1 ;

 SELECT ID, NAME FROM TABLE2 ;

 

 그러면 위에 예제 테이블 데이터대로 ID와 NAME값을 얻을 수 있다. 그럼 하나의 쿼리로 만들기 위해 UNION ALL을 사용해보자.

 

 SELECT ID, NAME FROM TABLE1 ;

 UNION ALL

 SELECT ID, NAME FROM TABLE2 ;

 

 UNION ALL 연산자 결과

ID NAME
1 김서방
2 조서방
2 조서방
3 박서방

 

 그러면 위와 같이 출력되는 것을 확인할 수 있다. UNION ALL 연산자는 각각에 쿼리에서 나온 데이터를 하나로 합쳐주는 역할을 하고 있으며, 중복되는 값도 그대로 출력이 된다. 그럼 다른 연산자인 UNION을 사용해보자.

 

 SELECT ID, NAME FROM TABLE1 ;

 UNION

 SELECT ID, NAME FROM TABLE2 ;

 

 UNION 연산자 결과

ID NAME
1 김서방
2 조서방
3 박서방

 

 그러면 UNION ALL 연산자와 확연히 차이나는 부분이 있을 것이다. 바로 중복되는 부분은 하나에 로우로만 출력이 되는 것이다.

 

 UNION 연산자와 UNION ALL 연산자는 두 개이상에 SQL 쿼리를 하나로 만들어주지만 차이나는 부분은 중복여부이다. 또한 UNION 연산자를 사용할 시에는 각 쿼리에 컬럼 갯수 및 명칭을 맞춰줘야 되며 그렇지 않으면 오류가 발생하는 것을 볼 수 있다.

 

 

- 링크

[SQL] 쿼리문 합치는 방법 (UNION, UNION ALL) (tistory.com)