개발공작소
article thumbnail
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
반응형
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!