SQL 8 - union

민정윤·2024년 10월 4일
0

UNION

UNION = 여러개의 sql문을 합쳐서 하나의 sql문으로 만들어주는 방법

  • UNION : 중복된 값을 제거하여 보여줌.
  • UNION ALL : 중복된 값도 모두 보여줌.

기본 구조

SELECT col1, col2, ... FROM tableA
UNION | UNION ALL
SELECT col1, col2, ... FROM tableB;

예제

  • 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 yg인 데이터를 검색하는 쿼리를 union all / union로 실행
select name, sex, agency from celeb where sex= 'F'
union all / union
select name, sex, agency from celeb where agency = 'yg엔터테인먼트';

union all로 하면
('이수현' 중복된 데이터까지 조회)

union로 하면 ('이수현' 중복된 데이터 안 보임)

주의할 점!

🚨컬럼의 개수가 같아야 함

🚨컬럼 개수가 다를 때 예시)

  • 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와 1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 union으로 실행
select name, job_title 
from celeb 
where job_titile like '%가수%'
union
select name, birthday, age 
from celeb 
where birthday between '1980-01-01' and '1989-12-31';
  • 만약에 위와 같은 식으로 UNION 쿼리를 실행하면 어떻게 될까?
    ===> ERROR // 에러 // 합쳐서 조회하려는 컬럼 개수가 다르기 때문!
  • 두 번째 select 문에서 age 컬럼을 지우면 결과가 나오지만
    job_title이라는 컬럼에 birthday 데이터가 섞여서 나오게 됨.

🚨컬럼 개수만 맞춘다고 원하는 결과가 나오지는 않는다!

0개의 댓글