본문 바로가기
데이터베이스[DB]/MSSQL

[MS-SQL] UNION, UNION ALL

by 낭만의개꿈 2025. 3. 18.

 

데이터를 표기할 때, 두 개의 테이블에 자료를 하나로 합쳐서 표기해야 하는 경우들이 있다. 오늘은 그중에서 합집합과 관련된 함수인 UNION과 UNION ALL에 대해 확인하도록 하겠다.

Create Temp Table & Create Data
CREATE TABLE #tmp_math
(
	cust_id int,
	cust_name varchar(10),
	math int
)

INSERT INTO #tmp_math VALUES (1,'홍길동',85)
INSERT INTO #tmp_math VALUES (2,'이순신',100)

CREATE TABLE #tmp_kr_lang
(
	cust_id int,
	cust_name varchar(10),
	kr_lang int
)

INSERT INTO #tmp_kr_lang VALUES (1,'홍길동',100)
INSERT INTO #tmp_kr_lang VALUES (2,'이순신',95)


SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang

 

#tmp_math, #tmp_kr_lang 조회

 

UNION 
  • UNION 연산은 두 개의 테이블을 하나로 만드는 연산이다.
  • 두 개의 테이블의 컬럼 수, 컬럼의 데이터 형식 모두가 일치해야 가능하다.
  • UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다.
  • UNION 은 정렬(sort) 과정을 발생시킨다.
SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang

SELECT math FROM #tmp_math
UNION 
SELECT kr_lang FROM #tmp_kr_lang

UNION 을 이용한 조회값

 

위 UNION 의 설명대로 math 컬럼과 kr_lang 컬럼을 UNION을 이용하여 조회하면 보기와 같이 중복된 값을 제거함과 동시에 값을 자동으로 정렬처리하여 표기한다. math 컬럼과 kr_lang 컬럼은 서로 같은 int 형식이기에 조회가 가능하며, 서로 다른 컬럼형식을 사용했을 경우 오류가 발생하면서 조회가 처리되지 않는다.

컬럼형식이 다른 값을 UNION 처리할 때 발생하는 오류.

UNION ALL
  • 두 개의테이블을 하나로 합치는 것이다.
  • UNION처럼 중복을 제거하거나 정렬을 유발하지 않는다.
SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang

SELECT math FROM #tmp_math
UNION ALL
SELECT kr_lang FROM #tmp_kr_lang

UNION ALL 을 이용한 조회

 

위 UNION ALL의 설명대로 math 컬럼과 kr_lang 컬럼을 UNION ALL을 이용하여 조회하면 보기와 같이 중복 제외나 정렬을 유발하지 않고, SELECT 하고자 하는 컬럼값의 값을 모두 표기하는 것을 확인할 수 있다. 다만 UNION과 마찬가지로 컬럼 형식이 다른 값을 UNION ALL을 하여 처리하고자 할 때에는 동일한 오류가 발생한다.