-
SQL - 표의 합 - UNIONSQL 2024. 11. 14. 10:26
SELECT * FROM table INNER JOIN table_2 ON table.id = table_2.id UNION ALL SELECT * FROM table_3;
SQL에서 UNION을 사용하여 여러 테이블 결합하기
SQL에서는 UNION을 사용하여 여러 개의 SELECT 쿼리 결과를 하나로 결합할 수 있습니다. 이때 중요한 점은 UNION을 사용할 때 각 SELECT 쿼리가 동일한 컬럼 수와 데이터 타입을 가져야 한다는 것입니다. 또한, UNION은 중복된 데이터를 자동으로 제거합니다. 만약 중복을 제거하지 않으려면 UNION ALL을 사용하면 됩니다.
이번 글에서는 UNION을 사용하여 INNER JOIN으로 결합된 테이블과 또 다른 테이블을 결합하는 예제를 살펴보겠습니다.
예시: table, table_2, table_3 결합하기
다음과 같은 세 개의 테이블이 있다고 가정해 보겠습니다:
- table: 기본 테이블
- table_2: table과 조인할 테이블
- table_3: 독립적으로 데이터를 가져올 테이블
1. INNER JOIN을 사용하여 table과 table_2를 결합하기
먼저 table과 table_2를 INNER JOIN으로 결합합니다. INNER JOIN은 두 테이블에서 조건을 만족하는 행만 반환합니다. 이 예시에서는 table.id와 table_2.id가 일치하는 데이터를 가져옵니다.
sql코드 복사SELECT * FROM table INNER JOIN table_2 ON table.id = table_2.id위 쿼리는 table과 table_2에서 id가 일치하는 데이터를 결합하여 반환합니다.
2. table_3의 데이터를 가져오기
두 번째 쿼리는 table_3에서 데이터를 가져옵니다. 이때 table_3은 table과 table_2와는 관계가 없으므로 단독으로 데이터를 반환합니다.
SELECT * FROM table INNER JOIN table_2 ON table.id = table_2.id
3. UNION을 사용하여 결과 결합하기
이제 UNION을 사용하여 위 두 쿼리 결과를 합칩니다. UNION은 두 쿼리의 결과를 결합하고, 중복된 데이터는 자동으로 제거합니다.
SELECT * FROM table INNER JOIN table_2 ON table.id = table_2.id UNION SELECT * FROM table_3;
위 쿼리는 다음과 같은 작업을 수행합니다:
- table과 table_2에서 id가 일치하는 데이터를 INNER JOIN으로 결합합니다.
- table_3에서 데이터를 가져옵니다.
- 두 결과를 결합하여 중복된 데이터를 제거한 후 반환합니다.
UNION과 UNION ALL의 차이
- UNION: 중복된 값을 제거합니다.
- UNION ALL: 중복된 값을 제거하지 않고 모든 데이터를 반환합니다.
따라서 중복을 허용하려면 UNION ALL을 사용할 수 있습니다. 예를 들어, 위의 쿼리를 중복을 허용하도록 수정하려면 다음과 같이 작성할 수 있습니다:
결론
UNION을 사용하면 여러 개의 SELECT 쿼리 결과를 결합할 수 있습니다. INNER JOIN을 사용하여 테이블을 결합하고, 또 다른 테이블의 데이터를 합치는 방식은 데이터 분석 및 보고서 작성 시 매우 유용하게 사용될 수 있습니다. UNION을 사용할 때 중복을 자동으로 제거할 수 있지만, 중복 데이터를 그대로 유지하고 싶다면 UNION ALL을 사용하는 것이 좋습니다.
'SQL' 카테고리의 다른 글
SQL - self join (2) 2024.11.14 SQL JOIN 기초: INNER JOIN과 LEFT JOIN, 그리고 JOIN의 의미 (0) 2024.11.13 SQL - INNER JOIN: 두 개이상의 Table를 결합하는 기능 - (0) 2024.11.13 SQL의 CASE 심화 (1) 2024.11.12 SQL의 CASE사용법 (1) 2024.11.11