일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- egov
- query
- swipe 배너
- 정보처리산업기사
- mybatis
- github
- JAXBContext
- vue.js
- MariaDB
- 기출문제
- vscode tutorial
- Ajax
- java
- mysql
- JQuery
- jsp
- INSERT
- Tomcat
- spring
- 부스트코스
- 오라클
- vue Carousel
- 구멍가게코딩단
- NoSQL
- jdbc
- checkbox
- JSON
- 마스킹
- bulkinsert
- insertAll
- Today
- Total
개발새발
[oracle] union & union all 본문
조회한 다수의 select 문을 하나로 합치고 싶을 때 UNION을 사용.
UNION = 결과를 합칠때 중복되는 행은 하나만 표시
UNION ALL = 중복제거를 하지 않고 모두 합쳐서 표시
UNION
두개의 select 결과를 합칠수 있다.
합친 결과에서 중복되는 행은 하나만 표시한다.
단, 컬럼의 갯수가 같아야하고, 각 컬럼의 데이터타입이 같아야한다.
사용법 SELECT * FROM A UNION (ALL) SELECT * FROM B
|
두개의 테이블을 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
|
결과는 요로케,,
(근데 왜 REGION_NAME 컬럼은 안나와? JOIN 같은거 아냐?)
또한, UNION은 중복을 허용하지 않는다.
따라서, 아래와 같이 중복된 데이터가 있으면 중복을 알아서 제거해 준다.
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1, 2) |
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2, 3) |
위 두개의 조회결과를 UNION하게 되면,
SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1, 2) UNION SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2, 3) |
중복이 제거되어 나온다.
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) |
중복된 결과를 포함시킨다.
'[Daliy]' 카테고리의 다른 글
컴파일된 클래스파일 찾기 (0) | 2020.04.24 |
---|---|
[oracle] object 내 특정문자열 찾기 (0) | 2020.04.08 |
[oracle] merge문 (0) | 2020.03.24 |
[2019.12.17] ajax (0) | 2019.12.17 |
[2019.12.16] (0) | 2019.12.16 |