반응형

@notepad_jj2

츄르사려고 코딩하는집사입니다.


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;

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기