일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- DB
- Custom URI Schemes
- github
- MVC
- 안티 패턴
- Java
- Stash
- 쿼리
- 현재날짜 구하기
- 마켓보로
- ANTI PATTERN
- Git
- Runtime
- framework
- sql
- mybatis
- Runtime.getRuntime.exec()
- CMD
- Oracle
- 자바에서 응용프로그램 실행
- 채용공고
- 튜닝
- 레지스트리
- mave project
- spring framework
- spring
- NSIS
- 설치프로그램
- javascript
- 자바스크립트
- Today
- Total
corn-cheese
[DB] Oracle Union, Union ALL이란? 본문
조회한 다수의 SELECT 문을 하나로 합치고싶을때 유니온(UNION) 을 사용 할 수 있습니다.
UNION 은 결과를 합칠때 중복되는 행은 하나만 표시해줍니다.
UNION ALL 은 중복제거를 하지 않고 모두 합쳐서 보여줍니다.
UNION
두개의 SELECT 결과를 합칠수 있습니다. 합친 결과에서 중복되는 행은 하나만 표시합니다.
단, 컬럼의 개수가 같아야하고, 각 컬럼의 데이터타입이 같아야합니다.
사용법
SELECT * FROM A
UNION (ALL)
SELECT * FROM B
기본테이블인 COUNTRIES테이블과 REGION 테이블을 UNION 해보겠습니다.
두개의 테이블을 UNION 하기위한 조건으로 컬럼의 갯수와, 타입이 같아야합니다.
때문에 COUNTRIES에서는 COUNTRY_NAME 과 REGION_ID 를 SELECT 하고,
REGIONS 테이블은 REGION_NAME 과 REGION_ID를 조회하겠습니다.
SELECT COUNTRY_NAME, REGION_ID FROM COUNTRIES
UNION
SELECT REGION_NAME, REGION_ID FROM REGIONS |
cs |
두개의 SELECT 가 합쳐져 하나의 결과를 도출했습니다.
또한, UNION 은 중복을 허용하지 않습니다.
따라서 아래와같이 중복이된 데이터가있으면 중복을 제거하여줍니다.
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1,2) |
cs |
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2,3) |
cs |
위 두개의 조회결과를 UNION하게되면
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1,2)
UNION
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2,3) |
cs |
중복이 제거되어 나옵니다.
UNION ALL
UNION ALL 은 중복을 제거하지 않습니다.
위 두개의 SELECT 를 UNION ALL 하면
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1,2)
UNION ALL
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2,3) |
cs |
중복된 결과도 포함시킵니다.
'IT > DB' 카테고리의 다른 글
[펌] DB INDEX 제대로 사용하기 (0) | 2020.11.25 |
---|---|
[ORACLE] MD5 패스워드 암호화 (0) | 2020.11.06 |
SQL 튜닝 (0) | 2020.07.09 |
[Oracle] Select 쿼리 튜닝 순서 (0) | 2020.06.10 |
[펌] oracle MERGE INTO 문으로 있으면 UPDATE 없으면 INSERT 한번에 수행하기 (0) | 2020.03.18 |