Database/ORACLE
[ORACLE 이론] 중복 제거: UNION, DISTINCT / 중복: UNION ALL
오류나면꽥꽥
2025. 1. 21. 10:50
📍 비교
| DISTINCT | UNION | UNION ALL |
| 하나의 SELECT 결과 안에서 중복 제거 |
여러 SELECT 결과를 합친 후 중복 제거 |
여러 SELECT 결과를 합친 후 중복 제거 X |
✅ DISTINCT
- 하나의 SELECT 결과 안에서 중복 제거
- 대상 컬럼 전체를 기준으로 중복을 판단
- 쿼리 구조가 단순할 때 사용
기본 문법)
SELECT DISTINCT [컬럼명] FROM [테이블명];
ex)
SELECT DISTINCT name
FROM table_a;
- table_a의 name 컬럼에서 중복 제거
✅ UNION
- 여러 SELECT 결과를 합친 후 중복 제거
- 각 SELECT 결과를 합친 다음, 전체에서 중복을 판단
- 컬럼 개수, 타입이 동일해야 함
기본 문법)
SELECT column1, column2, ...
FROM table1
WHERE condition
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition;
ex)
SELECT name FROM table_a
UNION
SELECT name FROM table_b;
- 두 테이블의 name 값이 합쳐지고, 중복된 이름은 1번만 표시됨
✅ UNION ALL
- UNION과 달리 중복을 제거하지 않음
- 중복 검사 과정이 없어서 UNION보다 빠름
ex)
SELECT name FROM table_a
UNION ALL
SELECT name FROM table_b;
- 두 테이블의 name 값을 그대로 합침 (중복 포함)