츄르사려고 코딩하는집사입니다.
2개 이상의 SELECT 문의 결과가 있을 때, SELECT 문의 결과들을 1개로 합치고 싶으면 사용하는 연산자가 있습니다. 바로, 집합 연산자입니다.
집합 연산자는 UNION, UNION ALL, INTERSECT, MINUS가 있습니다.
집합연산자 UNION
집합연산자 UNION은 2개의 SELECT 문의 결과를 합치고 싶을 때 사용을 합니다. 단, 이 2개의 SELECT 문의 결과에서는 중복 데이터가 존재할 수 있는데, 이 중복 데이터를 1번만 출력하고 싶을 때 사용하는 것이 집합연산자 UNION입니다. 그래서, 집합연산자 UNION은 2개의 SELECT 문의 결과를 중복 데이터를 1번만 출력하여 보여줄 수 있습니다.
먼저, UNION을 하기 위해 2개의 테이블을 만들어 줍니다.
CLASS, NAME, SCORE 컬럼을 가진 테이블 A
-- A라는 테이블로, NAME, CLASS, SCORE 컬럼을 가진 테이블 생성
CREATE TABLE A(
CLASS VARCHAR(10) DEFAULT ' ' NOT NULL,
NAME VARCHAR(10) DEFAULT ' ' NOT NULL,
SCORE VARCHAR(10) DEFAULT ' ' NOT NULL
);
CLASS, NAME, SCORE 컬럼을 가진 테이블 B
-- B라는 테이블로, NAME, CLASS, SCORE 컬럼을 가진 테이블 생성
CREATE TABLE B(
CLASS VARCHAR(10) DEFAULT ' ' NOT NULL,
NAME VARCHAR(10) DEFAULT ' ' NOT NULL,
SCORE VARCHAR(10) DEFAULT ' ' NOT NULL
);
A 테이블에 데이터 INSERT
INSERT INTO A VALUES('1', 'A', '80');
INSERT INTO A VALUES('1', 'B', '75');
INSERT INTO A VALUES('1', 'C', '70');
INSERT INTO A VALUES('2', 'D', '95');
INSERT INTO A VALUES('3', 'E', '90');
INSERT INTO A VALUES('3', 'F', '85');
INSERT INTO A VALUES('2', 'G', '55');
INSERT INTO A VALUES('2', 'H', '50');
INSERT INTO A VALUES('1', 'I', '60');
B 테이블에 데이터 INSERT
INSERT INTO B VALUES('1', 'J', '80');
INSERT INTO B VALUES('5', 'K', '75');
INSERT INTO B VALUES('6', 'L', '70');
INSERT INTO B VALUES('7', 'M', '95');
INSERT INTO B VALUES('3', 'N', '90');
INSERT INTO B VALUES('6', 'O', '85');
INSERT INTO B VALUES('6', 'P', '55');
INSERT INTO B VALUES('5', 'Q', '50');
INSERT INTO B VALUES('4', 'R', '60');
그러면 아래와 같이, CLASS, NAME, SCORE 컬럼을 가지고 있는 A 테이블과 B 테이블을 만들 수 있습니다.
SELECT * FROM A;
SELECT * FROM B;
이제, 이 결과를 집합연산자인 UNION을 사용하여 중복 데이터 제거한 결과로 만들 수 있습니다.
SELECT CLASS FROM A
UNION
SELECT CLASS FROM B;
UNION을 한 결과는 ORDER BY를 하지 않으면, SELECT CLASS FROM A를 한 결과가 먼저 나오고, 그 다음에 SELECT CLASS FROM B를 한 결과가 첫 번째 SELECT 문 밑에 바로 붙습니다.
여기서, 중복된 데이터까지 모두 조회하고 싶으면 UNION ALL을 사용하면 됩니다.
SELECT CLASS FROM A
UNION ALL
SELECT CLASS FROM B;
UNION ALL을 사용하면 이렇게 중복된 데이터까지 다 볼 수 있습니다.
여기서, CLASS라는 컬럼에 대해 데이터를 정렬하여 보고 싶다면 밑에 ORDER BY를 넣어주면 됩니다.
SELECT CLASS FROM A
UNION ALL
SELECT CLASS FROM B
ORDER BY CLASS;
'IT > Oracle' 카테고리의 다른 글
[오라클/Oracle] 오라클(Oracle) 스케쥴러 잡(Scheduler Job) 확인하는 방법 (1) | 2023.02.27 |
---|---|
[오라클/Oracle] 오라클(Oracle) tnsnames.ora 위치 및 tnsnames.ora 파일이 없는 경우 (4) | 2023.02.23 |
[ORACLE/SQL] 오라클(Oracle) 날짜포맷 SYSDATE 사용 및 나라별 시차 계산 방법 (0) | 2023.02.08 |
[오라클/Oracle] 오라클(Oracle) 버전 확인하는 방법 (0) | 2022.09.14 |
오라클(Oracle)에서 GROUP BY 및 HAVING 절 사용법 (0) | 2021.11.09 |
오라클(Oracle) NVL 정리 (0) | 2021.10.07 |
오라클(Oracle) 올림, 내림, 반올림, 버림 함수 (0) | 2021.09.23 |
오라클(Oracle) SQL := 이란? (0) | 2021.09.23 |
최근댓글