다른 테이블의 데이터를 추가하는 방법에 대해 설명하겠습니다.
먼저, CREATE TABLE 문과 INSERT INTO을 사용하여 새로운 테이블과 데이터를 삽입하겠습니다.
-- 새로운 테이블 생성
CREATE TABLE table_a (
id INT PRIMARY KEY,
column1 VARCHAR(50),
column2 VARCHAR(50),
column3 INT,
column4 FLOAT
);
-- 데이터 삽입
INSERT INTO table_a (id, column1, column2, column3, column4) VALUES
(1, 'value1', 'value2', 10, 1.5),
(2, 'value3', 'value4', 20, 2.5),
(3, 'value5', 'value6', 30, 3.5),
(4, 'value7', 'value8', 40, 4.5),
(5, 'value9', 'value10', 50, 5.5);
-- 'table_b' 테이블 생성
CREATE TABLE table_b (
id INT PRIMARY KEY,
column1 VARCHAR(50)
);
-- 데이터 삽입
INSERT INTO table_b (id, column1) VALUES
(6, 'value1'),
(7, 'value10');
위 테이블을 사용해서 table_a에 table_b의 데이터를 추가하여 아래와 같은 결과를 도출하는 2가지 방법을 알아보겠습니다.
1/ UNION ALL을 사용하여 두 테이블을 합치는 방법
select
id,
column1,
column2,
column3,
column4
from
table_a
union all
select
id,
column1,
null as column2,
null as column3,
null as column4
from
table_b;
위의 쿼리는 table_a와 table_b를 UNION ALL로 합하여 새로운 테이블을 생성합니다.
이때, 두 번째 SELECT 문에서는 NULL 값을 추가로 넣어주어 열 수를 맞춰주고 있습니다.
이렇게 생성된 테이블은 id, column1, column2, column3, column4 열을 가지며, 두 테이블의 데이터를 모두 포함하고 있습니다.
2/ FULL OUTER JOIN을 사용하여 두 테이블을 합치는 방법
SELECT
coalesce(a.id, b.id) AS id,
coalesce(a.column1, b.column1) AS column1,
a.column2,
a.column3,
a.column4
FROM
table_a AS a
FULL OUTER JOIN
table_b AS b
ON
a.id = b.id
ORDER BY
1;
위의 쿼리는 table_a와 table_b를 FULL OUTER JOIN으로 조인하여 새로운 테이블을 생성합니다.
이때, COALESCE 함수를 사용하여 NULL 값을 대체합니다.
위와 마찬가지로 위 결과는 두 테이블의 데이터를 모두 포함하고 있습니다.
두 가지 방법의 장단점은 다양한 상황에 따라 다르겠지만,
보통 컬럼 수가 적을 때는 UNION ALL을 사용하는 거 같습니다. 왜냐하면 UNION ALL은 사용이 더 간단한 거 같습니다.
하지만 컬럼이 많은 경우에는 FULL OUTER JOIN을 사용하는 것이 더 효율적일 수 있습니다.
조인한 결과에서 겹치는 컬럼의 값은 COALESCE 함수를 사용하여 처리할 수 있습니다.
이렇게 하면 쿼리가 더 짧아지며, 가독성도 좋아집니다.
위와 같이 상황에 맞게 사용하면 됩니다.
'Skills > SQL' 카테고리의 다른 글
SQL CASE WHEN 효율적 사용법: 단일 vs 중첩 CASE WHEN 구문 (0) | 2023.06.05 |
---|---|
[SQL]지난 30일간 일별 평균 주문건수 확인하기 (0) | 2023.04.05 |
SQL WHERE IN을 활용한 다중 컬럼 필터링 (0) | 2023.03.29 |
이번 달과 지난 달에 속한 쿠폰 슬롯 수 분석하기 (0) | 2023.03.28 |
SQL 활용 쿠폰 프로모션 효과 분석: 전체 주문 대비 쿠폰 사용률 살펴보기 (0) | 2023.03.27 |