반응형
UNION, UNION ALL은 여러 조회한 결과를 합쳐주는 역할을 하는데
SELECT * FROM TB1
UNION(혹은 UNION ALL)
SELECT * FROM TB2
이런 식으로 조회한 결과를 합칠 수 있다
예제로 사용될 테이블과 쿼리는 위를 확인해주면 되는데
보면 두 테이블은 모두 NAME이 김철수, AGE가 30인 값을 제외하면
모두 다른 값들을 가지고 있다
UNION, UNION ALL을 사용해서 두 테이블을 모두 조회해본 뒤 결과를 합쳐보자
먼저 UNION의 경우에는 두 결과를 합치면서 중복 값은 제거하는데
TB1과 TB2에 모두 김철수, 30이 들어간 값이 있으므로
김철수는 두 줄이 아닌 한 줄만 나오는 것이 보인다
즉 UNION은 중복을 제거한 뒤 조회한 결과들을 합치는 것!
다음은 UNION ALL인데
UNION ALL은 중복값을 제거하지 않고 합치기 때문에
김철수가 2번 나오는 것이 보인다
즉 UNION ALL은 중복을 제거하지 않고 조회한 결과를 합치는 것!
마지막으로 간략히 정리해보면
UNION이나 UNION ALL이나 조회한 결과를 합치는 것은 동일하다
그러나
UNION은 중복을 제거하고 합치고
UNION ALL은 중복을 제거하지 않고 합친다는 것이 차이점이다
마지막으로 사용한 테이블과 쿼리는 아래를 참고해주면 된다
CREATE TABLE TB1 ( NAME VARCHAR2(20), AGE NUMBER(3) );
CREATE TABLE TB2 ( NAME VARCHAR2(20), AGE NUMBER(3) ); -- 테이블 TB1, TB2 생성
INSERT INTO TB1(NAME, AGE) VALUES('김철수', 30);
INSERT INTO TB1(NAME, AGE) VALUES('이영희', 35);
INSERT INTO TB1(NAME, AGE) VALUES('박영수', 40);
INSERT INTO TB1(NAME, AGE) VALUES('엄영수', 40); -- TB1에 값 삽입
INSERT INTO TB2(NAME, AGE) VALUES('김철수', 30);
INSERT INTO TB2(NAME, AGE) VALUES('최수영', 50);
INSERT INTO TB2(NAME, AGE) VALUES('하희영', 55); -- TB2에 값 삽입
SELECT * FROM TB1
UNION -- UNION은 각 결과를 합치며 중복 제거
SELECT * FROM TB2
SELECT * FROM TB1
UNION ALL -- UNION ALL은 각 결과를 합치며 중복 포함
SELECT * FROM TB2
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 JOIN 예제 및 사용방법 (0) | 2019.12.10 |
---|---|
오라클 MERGE INTO 사용법 & 예제 (0) | 2019.12.10 |
INNER JOIN, OUTER JOIN(LEFT, RIGHT, FULL) 예제부터 차이까지 (0) | 2019.12.05 |
오라클 NVL, NVL2 사용방법 및 예제 (0) | 2019.10.17 |
오라클 DECODE 사용방법 및 예제 (0) | 2019.10.17 |
댓글