Database/ORACLE

[ORACLE 이론] 중복 제거: UNION, DISTINCT / 중복: UNION ALL

오류나면꽥꽥 2025. 1. 21. 10:50

📍 비교

DISTINCT UNION UNION ALL
하나의 SELECT 결과
안에서 중복 제거
여러 SELECT 결과를
합친 후 중복 제거
여러 SELECT 결과를
합친 후 중복 제거 X

 

 

 

 

 

✅ DISTINCT

  1. 하나의 SELECT 결과 안에서 중복 제거
  2. 대상 컬럼 전체를 기준으로 중복을 판단
  3. 쿼리 구조가 단순할 때 사용

 

기본 문법)

SELECT DISTINCT [컬럼명] FROM [테이블명];

 

 

ex)

SELECT DISTINCT name
FROM table_a;
  • table_a의 name 컬럼에서 중복 제거

 

 

 

 

 

 

✅ UNION

  1. 여러 SELECT 결과를 합친 후 중복 제거
  2. 각 SELECT 결과를 합친 다음, 전체에서 중복을 판단
  3. 컬럼 개수, 타입이 동일해야 함

 

기본 문법)

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

  1. UNION과 달리 중복을 제거하지 않음
  2. 중복 검사 과정이 없어서 UNION보다 빠름

 

ex)

SELECT name FROM table_a
UNION ALL
SELECT name FROM table_b;
  • 두 테이블의 name 값을 그대로 합침 (중복 포함)