본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | 데이터 조회 및 필터 | UNION 과 UNION ALL

by dazwischen 2021. 9. 14. 19:44
반응형

본 포스트에서는 조회한 집합들을 합칠 때 사용하는 UNION과 UNION ALL에 대해서 살펴본다. 두 가지 데이터 셋을 하나의 셋으로 이어붙여주던 JOIN과 어떤 점에서 다른지 살펴보면 좋을 것 같다.

UNION & UNION ALL

SQL 문법 데이터 조회 필터 UNION UNION ALL

01 UNION : 중복을 제거하고 합치는

두 개의 각각의 테이블에 공통된 칼럼들이 있을 때 이들을 합쳐서 보고 싶을 수 있다. 마치 하나의 테이블이었던 것 처럼. 이럴 때 이용하는 것이 UNION이다. 우선 UNION을 어떻게 작성하는지 살 펴 본다.

SELECT	COL1, COL2
FROM	TABLE_01
UNION
SELECT	COL1, COL2
FROM	TABLE_O2
;

이렇게 되면 첫 번째 쿼리 문에서 얻어진 COL1, COL2로 이루어진 테이블 밑에 이어서 두 번째 쿼리문의 결과가 이어 붙어진다. 따라서 마치 하나의 테이블이었던 것 처럼 된다. 다시 말에 같은 칼럼 밑에 열 데이터들을 이어 붙여서 합친다. 이것이 공통 데이터를 기준으로 칼럼을 추가하여 합치던 JOIN과의 차이점이다.

EXAMPLE

한 회사에서 각각의 프로젝트를 진행하던 두 팀이 합쳐지면서 각각 수집한 고객 리스트를 합치도록 했다. 이 때 고객 리스트는 이름과 전화번호로 이루어져 있는데, 중복을 제거한 고객 리스트를 만들어 주세요.

SELECT 	NAME, TEL
FROM	PROJECT_A
UNION
SELECT	NAME, TEL
FROM	PROJECT_B
;

02 UNION ALL : 있는 그대로를 가져다 붙이는

UNION의 방식에서 중복된 자료를 지우지 않고 있는 그대로 붙이고 싶을 때는 UNION 뒤에 ALL을 붙여주면 된다.

SELECT 	COL1, COL2
FROM	TABLE_1
UNION ALL
SELECT	COL2, COL2
FROM	TABLE_2
;

이럴 경우 각 쿼리문이 가지고 있던 고유 형태를 유지한 체로 데이터를 이어 붙일 수 있다.

EXAMPLE

3개 학급의 수학 성적을 취합하려고 한다. 이 때 개인정보를 보호하는 차원에서 번호와 점수만 합치기로 했다. 이 때 학생들의 번호와 점수 리스트를 뽑아주세요.

SELECT	STU_NUM, MATH_TEST
FROM	CLASS_01
UNION ALL
SELECT 	STU_NUM, MATH_TEXT
FROM	CLASS_02
UNION ALL
SELECT 	STU_NUM, MATH_TEXT
;
반응형

댓글