【SQL】テーブルの結合 ~ 外部結合・LEFT/RIGHT JOIN ~

■ はじめに

https://dk521123.hatenablog.com/entry/2010/02/05/131206

の続き。

今回は、外部結合について、扱う。

目次

【0】外部結合の種類
【1】左外部結合(LEFT OUTER JOIN)
【2】右外部結合(RIGHT OUTER JOIN)
【3】内部結合と外部結合の違い
 1)内部結合の場合
 2)外部結合の場合

 【0】外部結合の種類

【1】左外部結合(LEFT OUTER JOIN)
【2】右外部結合(RIGHT OUTER JOIN)
【3】完全外部結合(FULL OUTER JOIN)

 => 以下の図が分かりやすい

http://dbm.mmp-inc.co.jp/wp-content/uploads/2023/04/image-2-1536x864.png




テーブルの結合 ~ 完全外部結合・FULL JOIN ~
https://dk521123.hatenablog.com/entry/2025/09/03/093606

【1】左外部結合(LEFT OUTER JOIN)

 * 左側テーブルのレコードに、右側テーブルのレコードを結合する
 * 右側テーブルに項目が存在しない場合、NULLで補う
 * OUTERを省略して、LEFT JOINでもいい

構文

SELECT * FROM 表名1
LEFT OUTER JOIN 表名2
ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件

【2】右外部結合(RIGHT OUTER JOIN)

 * 左外部結合の右版
  => 右側テーブルのレコードに、左側テーブルのレコードを結合する

【3】内部結合と外部結合の違い

* 以下「データ例」のような「テーブル1 」と「テーブル2」の結合を考える

データ例

テーブル1 
A
B
C
D
E

テーブル2 
A★共通
B★共通
F
G

 1)内部結合の場合

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1
 INNER JOIN テーブル2
 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];

 結果

A               A
B               B

2)外部結合の場合

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1
LEFT JOIN テーブル2 ON
[テーブル1].[フィールド1]=[テーブル2].[フィールド1];

 結果

A               A
B               B
C               NULL
D               NULL

 関連記事

テーブルの結合 ~内部結合・INNER JOIN~
https://dk521123.hatenablog.com/entry/2010/02/05/131206
テーブルの結合 ~ 完全外部結合・FULL JOIN ~
https://dk521123.hatenablog.com/entry/2025/09/03/093606
テーブルの結合 ~交差結合・CROSS JOIN~
https://dk521123.hatenablog.com/entry/2011/12/21/000000
テーブルの結合 ~完全結合・Union / Union All ~
https://dk521123.hatenablog.com/entry/2010/03/28/162247
全く関係ないテーブルを結合することを考える
https://dk521123.hatenablog.com/entry/2021/09/16/185552