- UNION : 중복된 값을 제거하여 보여줌.
- UNION ALL : 중복된 값도 모두 보여줌.
기본 구조
SELECT col1, col2, ... FROM tableA
UNION | UNION ALL
SELECT col1, col2, ... FROM tableB;
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 데이터가 섞여서 나오게 됨.
🚨컬럼 개수만 맞춘다고 원하는 결과가 나오지는 않는다!