실습 환경 만들기
테스트용 테이블 생성
CREATE TABLE test1
(
no int
);
CREATE TABLE test2
(
no int
);
데이터 추가 (1)
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (2);
INSERT INTO test1 VALUES (3);
데이터 추가 (2)
INSERT INTO test2 VALUES (5);
INSERT INTO test2 VALUES (6);
INSERT INTO test2 VALUES (3);
여러개의 SQL문을 합쳐서 하나의 SQL 문으로 만들어 주는 방법
⭐ 단, 컬럼의 갯수가 같아야 함 ❗
중복된 값을 제거해서 가져온다
SELECT column1, column2, ... FROM tableA
UNION
SELECT column1, column1, ... FROM tableB;
중복된 값을 모두 가져온다
SELECT column1, column2, ... FROM tableA
UNION ALL
SELECT column1, column1, ... FROM tableB;
예제 1. UNION ALL
SELECT * FROM test1
UNION ALL
SELECT * FROM test2;
예제 2. UNION
SELECT * FROM test1
UNION ALL
SELECT * FROM test2;
예제 3.
SELECT name, sex, agency FROM celeb WHERE sex='F'
UNION ALL
SELECT name, sex, agency FROM celeb WHERE agency = 'YG엔터';
예제 4.
가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리
1980년 대에 태어난 연예인의 이름, 생년월일, 나이
UNION으로 실행
SELECT name, job_title FROM celeb
WHERE job_title
LIKE '%가수%';
SELECT name, birthday, age FROM celeb
WHERE birthday
BETWEEN '1980-01-01' AND '1989-12-31';
그냥 UNION을 하는 경우 'different nuumber of columns'에러❗ 발생
따라서, 💡컬럼의 개수를 맞춰줘야함
SELECT name, job_title FROM celeb
WHERE job_title
LIKE '%가수%'
UNION
SELECT name, birthday FROM celeb
WHERE birthday
BETWEEN '1980-01-01' AND '1989-12-31';
SELECT name, birthday FROM celeb
WHERE name LIKE '이%'
UNION ALL
SELECT name, birthday FROM celeb
WHERE birthday BETWEEN '1979-01-01' AND '1970-12-31';