UNION/UNION ALL/cast

아뇨 민균데요·2025년 6월 9일
0

🔰 1. 기본 개념

UNIONUNION ALL두 개 이상의 SELECT 결과를 수직으로 붙이는 것
👉 쉽게 말해, 행을 합쳐서 하나의 테이블처럼 보여주는 것.
우리가 평소에 쓰던 JOIN이 가로로 붙여 '열'에 붙는 거랑 반대라고 생각하면 됨
예:

SELECT name FROM online_customer
UNION
SELECT name FROM offline_customer;

🆚 2. UNION vs UNION ALL 차이점

구분UNIONUNION ALL
중복 제거✅ 중복된 행 제거❌ 중복된 행도 모두 포함
성능느릴 수 있음 (중복 제거 때문)더 빠름
용도데이터 정제 목적집계용/로그용/전체 확인용 등

💡 3. 문법

UNION

SELECT 컬럼1, 컬럼2 FROM 테이블A
UNION
SELECT 컬럼1, 컬럼2 FROM 테이블B;
  • 결과: 중복된 행은 하나만 보여줌

UNION ALL

SELECT 컬럼1, 컬럼2 FROM 테이블A
UNION ALL
SELECT 컬럼1, 컬럼2 FROM 테이블B;
  • 결과: 중복된 행도 다 보여줌 (합집합 아님, 그냥 다 붙이기)

🧪 4. 예제

예제 테이블

-- 고객 정보 테이블 2개
TABLE online_customer
+----+--------+
| ID | NAME   |
+----+--------+
| 1  | Alice  |
| 2  | Bob    |

TABLE offline_customer
+----+--------+
| ID | NAME   |
+----+--------+
| 3  | Carol  |
| 2  | Bob    |

🔹 UNION 사용

SELECT NAME FROM online_customer
UNION
SELECT NAME FROM offline_customer;

결과:

Alice
Bob
Carol   -- 중복된 'Bob'은 1개만 출력됨

🔹 UNION ALL 사용

SELECT NAME FROM online_customer
UNION ALL
SELECT NAME FROM offline_customer;

결과:

Alice
Bob
Carol
Bob      -- 중복된 'Bob'도 다 출력됨

🧨 6. 주의할 점

  1. 컬럼 개수, 순서, 타입 일치해야 함

    SELECT id, name FROM A
    UNION
    SELECT id FROM B;  -- ❌ 에러 발생
  2. ORDER BY는 마지막에 1번만

    SELECT name FROM A
    UNION
    SELECT name FROM B
    ORDER BY name;

cast

convert와 동일함.
[사용법]
cast(123.45 as char)

CONVERT('2025-06-09', DATE)

profile
this man을 꿈 속에서 보신 적이 있으신가요?

0개의 댓글