業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【データ分析】
AI

執筆者:Handbook編集部

SQLでテーブル間を結合する方法まとめ(inner / left / right / full outer / union)

SQL でテーブル間を結合する方法まとめ(inner / left / right / full outer / union)

join は複数のテーブルを結合して表示させたいときに使う SQL 文です。本記事では join の種類と、似たような機能をもつ union について説明していきます。

説明をより分かりやすくするために以下の2つのテーブルを用いて説明を行います。

inner join

inner join(内部結合)は、指定した関連性のある要素を軸にして、テーブルを組み合わせてくれる命令です。どのように結合するかはonのあとに記述し、結合の対象となるカラムについて

テーブル名1.カラム名1 = テーブル名2.カラム名2

の形式で指定します。

例として、id を関連性の要素として inner join をすると次の通りになります。

select
  A.id AS A_id,
  B.id AS B_id,
  A.value AS A_value,
  B.value AS B_value
from
  Table_A
inner join
  Table_B
on
  A.id = B.id;

left join

left join では「関連性のある要素」が存在する場合にのみ表示のに対して、left join(左外部結合)は、関連性はなくとも左側(from 側)に存在するレコードも合わせて返します。また、右側のテーブルから一致するレコードを返します。

同様に結合条件をA.id = B.idで指定して left join すると次の通りになります。

select
  A.id AS A_id, B.id AS B_id,
  A.value AS A_value, B.value AS B_value
from
  Table_A
left join
  Table_B
on
  A.id = B.id;

right join

right join(右外部結合)は、left join の逆で、右側(join 側)のテーブルを軸に結合を行います。

select
  A.id AS A_id, B.id AS B_id,
  A.value AS A_value, B.value AS B_value
from
  Table_A
right join
  Table_B
on
  A.id = B.id;

full outer join

full outer join(完全外部結合)は、両方のテーブルの一致したレコードと一致しないレコードすべてのレコードを返します。

select
  A.id AS A_id, B.id AS B_id,
  A.value AS A_value, B.value AS B_value
from
  Table_A
full outer join
  Table_B
on
  A.id = B.id;

union

union は join と同様に、2 つ以上のリレーションのデータを結合するために使用されます。ただし、データと取得結果の形式を組み合わせる方法は異なります。join は 2 つのリレーションの 属性 を結合して新しいテーブルを形成しますが、union は 2 つの クエリの結果 を結合します。

union はunionunion allの2種類があります。違いとして、unionは重複した行は出力しません。unionunion allの構文は以下の通りです。

  • union
slect
  カラム名
from
  テーブルA

union

select
  カラム名
from
  テーブルB

  • union all
slect
  カラム名
from
  テーブルA

union all

select
  カラム名
from
  テーブルB

注意点として、それぞれの select 文の選択リスト(カラム名)の 列数 および データ型 は一致させる必要があります。列数やデータ型が違う場合はエラーとなります。

同様にidで union をしてみると以下のようになります。

  • union
slect
  id
from
  Table A

union

select
  id
from
  Table B

  • union all
slect
  id
from
  Table A

union all

select
  id
from
  Table B

union 重複した行を出力していないことが確認できます。

参考

info
備考

Hakky では社内のデータ活用やサービスとしてデータ提供を行うためのソリューションを展開しております。

「どんなことをお願いできるのか」「こんなことをやりたい」など、ご検討段階でも構いませんので、ぜひお気軽にフォームよりお問い合わせくださいませ。

Hakkyへのお問い合わせ
2025年06月12日に最終更新
読み込み中...