📍 비교
| 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 값을 그대로 합침 (중복 포함)
'Database > ORACLE' 카테고리의 다른 글
| [ORACLE] SQL에서 페이징(Pagination) (3) | 2025.08.05 |
|---|---|
| [ORACLE] 문자열 찾기: LIKE / INSTR (0) | 2025.08.05 |
| [ORACLE 이론] DECODE / CASE (0) | 2025.01.15 |
| [ORACLE 이론] 여러 값을 한 번에 수정: IN (0) | 2025.01.15 |
| [ORACLE 이론] 값이 null일 때 다른 값: NVL (0) | 2024.02.15 |