728x90
반응형
핵심
UNION : 쿼리(SELECT문)을 합친다. 모든 중복 된 ROW는 제거
UNION ALL : 쿼리(SELECT문)을 합친다. 모든 중복 된 ROW도 결과로 보여준다.
UNION ALL은 중복 된 녀석도 제거하지 않으므로, UNION보다 속도가 빠르다.
UNION보다는 UNION ALL을 쓰도록 하자.
그리고 UNION/UNION ALL보다는 가능하다면 테이블을 통합하는 게 좋다.
아래는 샘플.. 보면서 이해하도록 하자.
샘플 테이블
CREATE TABLE UNION_TABLE1(
UNION1_ID INTEGER,
UNION1_NAME CHARACTER VARYING(20),
UNION1_QTY CHARACTER VARYING(20)
);
INSERT INTO UNION_TABLE1 VALUES (101,'도서','8000원');
INSERT INTO UNION_TABLE1 VALUES (102,'과학책','13000원');
INSERT INTO UNION_TABLE1 VALUES (103,'역사책','6500원');
INSERT INTO UNION_TABLE1 VALUES (104,'잡지','11000원');
INSERT INTO UNION_TABLE1 VALUES (105,'달나라_여행', '15000원');
INSERT INTO UNION_TABLE1 VALUES (106,'내셔널지오그래픽_동물사전', '22000원');
CREATE TABLE UNION_TABLE2(
UNION2_ID INTEGER,
UNION2_NAME CHARACTER VARYING(20),
UNION2_QTY CHARACTER VARYING(20)
);
INSERT INTO union_table2 VALUES (101, '도서', '8000원');
INSERT INTO union_table2 VALUES (102, '과학책', '13000원');
INSERT INTO UNION_TABLE2 VALUES (103,'주꾸미','4500원');
INSERT INTO UNION_TABLE2 VALUES (104,'볼락','9000원');
INSERT INTO UNION_TABLE2 VALUES (105,'뱅에돔', '15000원');
INSERT INTO UNION_TABLE2 VALUES (106,'돌문어', '42000원');
UNION 기본문법 및 예제
--기본문법
SELECT
[컬럼명]
FROM [테이블명]
WHERE [조건]
UNION
SELECT
[컬럼명]
FROM [테이블명]
WHERE [조건];
--예제
SELECT
UNION1_ID,
UNION1_NAME,
UNION1_QTY
FROM UNION_TABLE1
UNION
SELECT
UNION2_ID,
UNION2_NAME,
UNION2_QTY
FROM UNION_TABLE2;
--조건절 예제
SELECT
UNION1_ID,
UNION1_NAME,
UNION1_QTY
FROM UNION_TABLE1
WHERE UNION1_ID = 101
UNION
SELECT
UNION2_ID,
UNION2_NAME,
UNION2_QTY
FROM UNION_TABLE2
WHERE UNION2_ID = 105;
<좌> 전체결과 <우> 조건절
UNION ALL 기본문법 및 예제
--기본문법
SELECT
[컬럼명]
FROM [테이블명]
WHERE [조건]
UNION ALL
SELECT
[컬럼명]
FROM [테이블명]
WHERE [조건];
--샘플코드
SELECT
UNION1_ID,
UNION1_NAME,
UNION1_QTY
FROM UNION_TABLE1
UNION ALL
SELECT
UNION2_ID,
UNION2_NAME,
UNION2_QTY
FROM UNION_TABLE2;
보면 UNION이 UNION ALL로만 바뀌었다.
보면 중복되는 녀석까지 SELECT 해오는 것을 알 수 있다.
아래처럼 하면 더 확연히 차이가 난다.
-- UNION 사용
SELECT
UNION1_ID
FROM UNION_TABLE1
UNION
SELECT
UNION2_ID
FROM UNION_TABLE2;
-- UNION ALL 사용
SELECT
UNION1_ID
FROM UNION_TABLE1
UNION ALL
SELECT
UNION2_ID
FROM UNION_TABLE2;
<좌> UNION <우> UNION ALL
728x90
반응형