UNION
または他の手法を使用して、単一の結果として表示したい2つのテーブルがあります。
このID
フィールドは両方のテーブルに関連しています。
2番目のテーブルには1つのフィールドが欠落しているため、最初のテーブルから欠落している値を想定する必要があります。
以下のサンプルコードは機能しますが、大規模なデータセットの場合は非常に遅くなります。
より効率的な解決策はありますか?
T1: T2:
+----+-------+--------+ +----+------+
| id | name | town | | id | name |
+----+-------+--------+ +----+------+
| 1 | Alice | London | | 1 | Bob |
| 2 | Alan | Zurich | +----+------+
+----+-------+--------+
望ましい結果:
+----+-------+--------+
| id | name | town |
+----+-------+--------+
| 1 | Alice | London |
| 2 | Alan | Zurich |
| 1 | Bob | London |
+----+-------+--------+
サンプルコード:
with T1 as
(
select * from
(
values
(1,'Alice','London') ,
(2,'Alan','Zurich')
) as t (id,name,town)
), T2 as
(
select * from
(
values
(1,'Bob')
) as t (id,name)
), T2WithTown as
(
select t2.id,t2.name,t1.town from T2
inner join T1 on t2.id=t1.id
)
select id,name,town from T1
union
select id,name,town from T2WithTown