SQL

[SQL#12] UNION / UNION ALL

j.d 2025. 4. 16. 21:05

SQL에서 UNION과 UNION ALL은 두 개 이상의 SELECT 결과를 수직으로 합치는 데 사용하는 문법입니다.

 

테이블 간의 관계가 없어도, 동일한 형식의 데이터를 한 번에 보여주고 싶을 때 유용합니다.

 

예시 테이블

online_customers 테이블

id name
1 Alice
2 Bob

 

offline_customers 테이블

id name
3 Charlie
4 Bob

 

 

1. UNION

SELECT name FROM online_customers
UNION
SELECT name FROM offline_customers;
name 
Alice
Bob
Charlie

→ Bob은 두 테이블에 모두 있지만, 한 번만 표시됩니다.

 

 

2. UNION ALL

SELECT name FROM online_customers
UNION ALL
SELECT name FROM offline_customers;
name
Alice
Bob
Charlie
Bob

→ Bob이 중복 포함되어 출력됩니다.

 

 

※ UNION vs UNION ALL

구문 설명
UNION 중복 제거 + 정렬 (기본값)
UNION ALL 중복 제거 없이 모든 행을 그대로 합침

 

  • UNION은 중복 제거와 정렬 비용이 있어 성능이 더 느릴 수 있습니다.
  • 중복이 중요하지 않다면 UNION ALL을 사용하는 것이 더 효율적입니다.
  • ORDER BY는 전체 결과에 대해 한 번만 사용할 수 있으며, 마지막 SELECT 뒤에만 작성해야 합니다.
SELECT name FROM online_customers
UNION
SELECT name FROM offline_customers
ORDER BY name;

 

 

  • UNION을 사용할 때는 SELECT 절의 컬럼 수와 타입이 정확히 일치해야 합니다.
-- 아래 쿼리는 오류 발생
SELECT name FROM online_customers
UNION
SELECT id, name FROM offline_customers;

'SQL' 카테고리의 다른 글

[DB Optimization#2] MySQL 구조  (0) 2025.04.16
[DB Optimization#1] DB 성능 최적화란?  (0) 2025.04.16
[SQL#11] JOIN  (0) 2025.04.16
[SQL#10] CASE  (0) 2025.04.16
[SQL#9] GROUP BY / HAVING  (0) 2025.04.16