두 SQL 테이블에서 열 선택 및 결합하기

데이터베이스 작업을 하다 보면 여러 테이블에서 데이터를 검색해야 하는 상황을 자주 겪게 됩니다. 그러한 시나리오는 공통 열이 있는 두 개의 테이블이 있을 때 발생합니다. 본 블로그 글에서는 두 개의 서로 다른 테이블인 Table1Table2에서 특정 열인 ColumnA를 선택하고 이를 하나의 결과 집합으로 반환하는 방법을 살펴보겠습니다.

문제 정의

데이터베이스에 다음과 같은 두 개의 테이블이 있다고 가정해 보겠습니다:

  • Table1ColumnA라는 이름의 열이 있으며, 값은 다음과 같습니다:

    • a
    • b
    • c
  • Table2에도 ColumnA라는 이름의 열이 있으며, 값은 다음과 같습니다:

    • d
    • e
    • f

당신의 목표는 두 테이블에서 ColumnA의 모든 인스턴스를 단일 열로 추출하여 결과 집합에 표시하는 것입니다. 즉, 출력이 다음과 같이 표시되기를 원합니다:

a
b
c
d
e
f

해결 방법

이를 달성하기 위해 UNION 연산자가 포함된 SQL 쿼리를 사용할 수 있습니다. UNION 연산자는 두 개 이상의 SELECT 문장의 결과를 하나의 결과 집합으로 결합할 수 있게 합니다.

SQL 쿼리 예제

다음은 이 작업을 수행하는 SQL 쿼리입니다:

SELECT ColumnA FROM Table1 
UNION 
SELECT ColumnA FROM Table2 
ORDER BY 1;

쿼리 분석

  1. 열 선택하기:

    • SELECT ColumnA FROM Table1을 시작으로 Table1ColumnA에 있는 모든 항목을 검색합니다.
    • 다음 부분인 SELECT ColumnA FROM Table2Table2에 대해 동일한 작업을 수행합니다.
  2. 결과 결합하기:

    • UNION 연산자는 두 개의 SELECT 문장의 결과 집합을 병합합니다.
    • 기본적으로 UNION은 중복 값을 제거하므로, 두 테이블의 ColumnA 값에 중복이 있을 경우 최종 출력에서 한 번만 나타납니다.
  3. 결과 정렬하기:

    • ORDER BY 1 절은 최종 출력을 첫 번째 열인 ColumnA에 따라 정렬합니다.

UNION ALL을 사용할 때

Table1Table2ColumnA 값이 절대 겹치지 않을 것이라고 확신하는 경우, UNION 대신 UNION ALL을 사용하는 것을 고려하세요. 이 옵션은 중복 검사에 따른 오버헤드를 피할 수 있어 성능을 향상시킬 수 있습니다:

SELECT ColumnA FROM Table1 
UNION ALL 
SELECT ColumnA FROM Table2 
ORDER BY 1;

요약

요약하자면, SQL에서 여러 테이블의 데이터를 결합하는 것은 UNION 연산자를 사용하여 효율적으로 처리할 수 있습니다. 이 방법은 데이터 검색을 단순화할 뿐만 아니라 데이터베이스 쿼리를 보다 강력하고 유연하게 만들어 줍니다.

이제 서로 다른 테이블에서 열을 쉽게 추출하고 병합하여 데이터를 효과적으로 관리하고 분석하는 능력을 향상시킬 수 있습니다!