본문 바로가기
Database/MSSQL

[MSSQL] Union

by BeomBe 2024. 2. 13.
반응형

Union이란?

MSSQL에서의 UNION은 두 개 이상의 SELECT 문의 결과를 결합하여 하나의 결과 집합으로 반환하는 연산자입니다. UNION은 중복된 행을 제거하고 고유한 행만을 결과로 반환합니다.

 

UNION의 구문은 기본적으로 아래처럼 사용됩니다.

SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition2

 

여러 개의 SELECT 문이 UNION으로 결합되며, 각 SELECT 문은 동일한 열 수와 호환되는 데이터 유형을 가져야 합니다.

아래는 UNION을 사용한 예시입니다

 

1. 두 개의 테이블에서 데이터 결합하기

SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2

위의 예시에서는 table1과 table2에서 column1과 column2를 선택한 후 UNION으로 결합하여 중복을 제거한 결과를 반환합니다.

 

2. 조건에 따른 데이터 필터링 후 결합하기

SELECT column1, column2
FROM table1
WHERE condition1
UNION
SELECT column1, column2
FROM table2
WHERE condition2

위의 예시에서는 table1과 table2에서 각각 조건에 맞는 데이터를 선택한 후 UNION으로 결합하여 중복을 제거한 결과를 반환합니다.

 

3. 정렬된 데이터 결합하기

SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2
ORDER BY column1

위의 예시에서는 table1과 table2에서 데이터를 선택한 후 UNION으로 결합하고, column1을 기준으로 정렬한 결과를 반환합니다.

 

* MSSQL에서의 UNION ALL은 두 개 이상의 SELECT 문의 결과를 결합하여 중복을 제거하지 않고 모든 행을 포함하는 하나의 결과 집합으로 반환하는 연산자입니다. 필요에 따라 UNION ALL을 사용할 수도 있습니다.

 

 

주의!! UNION을 사용할 때 자주 발생하는 오류

  1. SELECT 문의 열 수가 일치하지 않는 경우
    - UNION을 사용할 때, 모든 SELECT 문은 동일한 열 수와 호환되어야 합니다. 열 수가 다른 경우 오류가 발생할 수 있습니다.
  2. SELECT 문의 데이터 유형이 호환되지 않는 경우
    - UNION을 사용할 때, 각 SELECT 문의 선택한 열의 데이터 유형은 호환되어야 합니다. 데이터 유형이 호환되지 않으면 오류가 발생할 수 있습니다.
  3. UNION의 순서를 잘못 지정한 경우
    - UNION을 사용할 때, SELECT 문의 순서에 따라 결과가 결정됩니다. 올바른 순서로 UNION을 지정하지 않으면 원하는 결과를 얻을 수 없을 수 있습니다.
  4. UNION ALL 대신 UNION을 사용한 경우
    - 중복을 제거하려는 목적이 아니라면 UNION ALL을 사용해야 합니다. UNION 대신에 실수로 UNION ALL을 사용한 경우, 중복된 결과가 반환되어 의도와 다른 결과가 나타날 수 있습니다.
  5. UNION의 사용에 따른 성능 문제
    - UNION은 결과를 결합하기 위해 추가적인 작업을 수행하므로 성능에 영향을 줄 수 있습니다. 특히 큰 데이터 집합에서 UNION을 사용할 때는 성능 문제에 유의해야 합니다.

이러한 오류를 방지하기 위해서는 SELECT 문의 열 수와 데이터 유형을 확인하고, UNION의 순서를 올바르게 지정하며, 필요에 따라 UNION ALL을 사용하는 등 주의를 기울여야 합니다. 또한 성능 문제를 최소화하기 위해 필요한 인덱스를 생성하고 적절한 조건을 적용하는 것도 중요합니다.

반응형

'Database > MSSQL' 카테고리의 다른 글

[MSSQL] 엑셀로 데이터 뽑아냈을 때, 값 유지  (22) 2024.03.21
[MSSQL] 날짜(date) 관련 함수  (26) 2024.02.15
[MSSQL] With 문  (39) 2024.02.08
[MSSQL] Pivot  (36) 2024.02.08
MSSQL - SSMS 활용하여 데이터 메일로 받기  (0) 2023.12.30