UNION
- 테스트용 테이블 생성
CREATE TABLE test1
(
no int
);
CREATE TABLE test2
(
no int
);
- 테스트 데이터 추가
INSERT INTO test1 VALUES(1);
INSERT INTO test1 VALUES(2);
INSERT INTO test1 VALUES(3);
INSERT INTO test2 VALUES(5);
INSERT INTO test2 VALUES(6);
INSERT INTO test2 VALUES(3);
- 데이터 확인
SELECT FROM test1;
SELECT FROM test2;
- UNION
- 여러개의 SQL문을 합쳐서 하나의 SQL문으로 만들어주는 방법(주의: 칼럼의 개수가 같아야 함)
- UNION 문법
- UNION: 중복된 값을 제거해 알려준다
- UNION ALL: 중복된 값도 모두 보여준다
예제1 - UNION ALL
test1의 모든 데이터와 test2의 모든 데이터를 중복된 값 포함해 검색
- SELECT FROM test1
UNION ALL
SELECT FROM test2;
예제1 - UNION
test1의 모든 데이터와 test2의 모든 데이터를 중복된 값 제거해 검색
- SELECT FROM test1
UNION
SELECT FROM test2;
예제2 - UNION ALL
성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 UNION ALL로 실행
- SELECT name, sex, agency FROM celeb WHERE sex = 'F'
UNION ALL
SELECT name, sex, agency FROM celeb WHERE agency = 'YG엔터테인먼트';
--> 이수현이 두번 나옴
예제2 - UNION
성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 UNION으로 실행
- SELECT name, sex, agency FROM celeb WHERE sex = 'F'
UNION
SELECT name, sex, agency FROM celeb WHERE agency = 'YG엔터테인먼트';
--> 중복값인 이수현이 한번 나옴
예제3 - UNION
가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와,
1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행
- SELECT name, job_title FROM celeb WHERE job_title LIKE '%가수%'
UNION
SELECT name, birthday, age FROM celeb WHERE birthday BETWEEN '1980-01-01' AND '1989-12-31';
--> 오류가 뜸
가져오는 컬럼의 개수가 "다르다"
=종류는 상관없음. SELECT 2, SELECT 3로 개수가 다름