[2023.11.22] SQL_UNION

하은·2023년 11월 22일
0

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로 개수가 다름

0개의 댓글