IT 소스/MariaDB

[MariaDB] 테이블 결합 - UNION

한량이야기 2023. 1. 18. 09:04
반응형

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

 

예문 테이블을 가지고 유니온이 어떻게 동작하는지 알아보겠습니다.

CREATE TABLE class1 ( name VARCHAR(20), score INT );
CREATE TABLE class2 ( name VARCHAR(20), score INT );

INSERT INTO class1 VALUES ('BILL', 60), ('KIM', 50), ('ROSE', 70), ('KIM', 50);
INSERT INTO class2 VALUES ('SALLY', 60), ('AMY', 80), ('NANCY', 90), ('BILL', 60);

1. UNION

중복된 데이터는 제거되고, 중복되지 않은 데이터 1건만 결과로 반환합니다.

SELECT name, score 
  FROM class1
UNION
SELECT name, score 
  FROM class2

// 실행 결과
name |score|
-----+-----+
BILL |   60|
KIM  |   50|
ROSE |   70|
SALLY|   60|
AMY  |   80|
NANCY|   90|

위 쿼리를 실행하니 'KIM'과 'BILL'의 중복된 데이터를 제거한 결과를 반환했습니다. 

 

2. UNION ALL

중복된 데이터는 제거하지 않고 모든 결과가 반환합니다.

SELECT name, score 
  FROM class1
UNION ALL
SELECT name, score 
  FROM class2

//실행 결과
name |score|
-----+-----+
BILL |   60|
KIM  |   50|
ROSE |   70|
KIM  |   50|
SALLY|   60|
AMY  |   80|
NANCY|   90|
BILL |   60|

위 쿼리를 실행하니 'KIM'과 'BILL'의 중복된 데이터를 모두 결과로 반환했습니다. 

 

3. UNION 및 UNION ALL 사용 시 주의사항

1. 모든 쿼리의 SELECT의 칼람의 개수와 데이터 타입이 일치해야 합니다.

2. 별칭은 첫 데이블에만 적용됩니다. 이후 데이블의 별칭은 무시됩니다.

3. ORDER BY는 쿼리 마지막에 한 번만 사용할 수 있습니다. 

SELECT name AS 'nick_name'	   // 칼람 개수와 데이터 타입이 일치 해야 합
     , score AS 'total_score'  
  FROM class1
UNION ALL
SELECT name AS 'my_name'	// 별칭은 무시 됨
     , score AS 'my_score'  // 별칭은 무시 됨
  FROM class2
ORDER BY score DESC		// ORDER BY 절은 마지막에 한 번만 사용 가능

// 실행 결과
nick_name |total_score|
----------+-----------+
NANCY     |         90|
AMY       |         80|
ROSE      |         70|
SALLY     |         60|
BILL      |         60|
BILL      |         60|
KIM       |         50|
KIM       |         50|

 

반응형

'IT 소스 > MariaDB' 카테고리의 다른 글

[MariaDB] SQL 쿼리 - LIKE, NOT LIKE  (1) 2023.01.25
[MariaDB] SQL 쿼리 - IN, NOT IN  (0) 2023.01.20
[MariaDB] 테이블 연결 - JOIN  (0) 2023.01.17
[MariaDB] 테이블 수정 - ALTER  (0) 2023.01.13
[MariaDB] 데이터 삭제 - DELETE  (0) 2023.01.12