두 SQL 테이블에서 열 선택 및 결합하기
데이터베이스 작업을 하다 보면 여러 테이블에서 데이터를 검색해야 하는 상황을 자주 겪게 됩니다. 그러한 시나리오는 공통 열이 있는 두 개의 테이블이 있을 때 발생합니다. 본 블로그 글에서는 두 개의 서로 다른 테이블인 Table1
과 Table2
에서 특정 열인 ColumnA
를 선택하고 이를 하나의 결과 집합으로 반환하는 방법을 살펴보겠습니다.
문제 정의
데이터베이스에 다음과 같은 두 개의 테이블이 있다고 가정해 보겠습니다:
-
Table1에
ColumnA
라는 이름의 열이 있으며, 값은 다음과 같습니다:- 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;
쿼리 분석
-
열 선택하기:
SELECT ColumnA FROM Table1
을 시작으로Table1
의ColumnA
에 있는 모든 항목을 검색합니다.- 다음 부분인
SELECT ColumnA FROM Table2
는Table2
에 대해 동일한 작업을 수행합니다.
-
결과 결합하기:
UNION
연산자는 두 개의SELECT
문장의 결과 집합을 병합합니다.- 기본적으로
UNION
은 중복 값을 제거하므로, 두 테이블의ColumnA
값에 중복이 있을 경우 최종 출력에서 한 번만 나타납니다.
-
결과 정렬하기:
ORDER BY 1
절은 최종 출력을 첫 번째 열인ColumnA
에 따라 정렬합니다.
UNION ALL을 사용할 때
Table1
과 Table2
의 ColumnA
값이 절대 겹치지 않을 것이라고 확신하는 경우, UNION
대신 UNION ALL
을 사용하는 것을 고려하세요. 이 옵션은 중복 검사에 따른 오버헤드를 피할 수 있어 성능을 향상시킬 수 있습니다:
SELECT ColumnA FROM Table1
UNION ALL
SELECT ColumnA FROM Table2
ORDER BY 1;
요약
요약하자면, SQL에서 여러 테이블의 데이터를 결합하는 것은 UNION
연산자를 사용하여 효율적으로 처리할 수 있습니다. 이 방법은 데이터 검색을 단순화할 뿐만 아니라 데이터베이스 쿼리를 보다 강력하고 유연하게 만들어 줍니다.
이제 서로 다른 테이블에서 열을 쉽게 추출하고 병합하여 데이터를 효과적으로 관리하고 분석하는 능력을 향상시킬 수 있습니다!