AI資格ドリル
資格を選ぶ↓

用語比較

内部結合と外部結合の違い

内部結合(INNER JOIN)は、結合条件に一致する行の組み合わせだけを残す結合方法です。外部結合にはLEFT・RIGHT・FULLの種類がありますが、このページはPostgreSQL公式文書で挙動が確認できているLEFT OUTER JOINに絞って解説します。LEFT OUTER JOINは、内部結合の結果に加えて、右表に一致行がない左表の各行を、右表側をNULLの1行として残します。

試験では、結合条件に一致しない行を結果から外すか、それとも残すかを先に見ます。一致する行だけを残すなら内部結合、一致しない左表の行もNULLで補って残すならLEFT OUTER JOINの外部結合と、一致しない行の扱いで切り分けます。

このページは、内部結合と外部結合を「どちらも複数のテーブルをつなげる操作」とまとめて覚えてしまった人を対象にしています。結合条件に一致しない行が結果に残るかどうかを、表の行数を実際に数える例から確認し、内部結合とLEFT OUTER JOINの違いを一続きで判断します。

この記事の根拠と出典

本文の主要なセクションでは、公式一次資料と照合した内容と編集部の整理を、見出しの下のラベルで区別しています。 試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-07-12。

結論

内部結合(INNER JOIN)

結合条件に一致する行の組み合わせだけを結果に残す。一致しない行は結果に含まれない。

外部結合(LEFT OUTER JOIN)

内部結合の結果に加えて、右表に一致行がない左表の各行を、右表側をNULLの1行として残す。

違いを表で確認

比較軸内部結合(INNER JOIN)外部結合(LEFT OUTER JOIN)
一致しない行の扱い結果から除外する右表側をNULLで補って残す(左表の行が基準)
結果の行数結合条件を満たす組み合わせの数と一致する内部結合の結果行数に、一致しなかった左表の行数を足した数になる
試験で見る語一致、条件、組み合わせNULL、欠損、一致しない行を残す
本記事が扱う範囲INNER JOIN全般LEFT OUTER JOINの挙動のみ(RIGHT・FULL OUTER JOINは公式文書で挙動を確認できていないため対象外)

どこで迷っているかを切り分ける

01

内部結合と外部結合を『どちらもテーブルをつなげる操作』とまとめて覚える初学者

内部結合は結合条件に一致する行の組み合わせだけを残し、一致しない行は結果から消えます。外部結合(LEFT OUTER JOIN)は、それに加えて右表に一致行がない左表の行も、右表側をNULLで補って残します。『つなげる』という動作は同じでも、一致しない行を消すか残すかが違います。

02

結果の行数を数える問題で戸惑う人

内部結合の結果行数は、結合条件を満たす組み合わせの数そのものです。LEFT OUTER JOINの結果行数は、その内部結合の結果行数に、右表と一致しなかった左表の行の数を足した数になります。表の行数を実際に書き出して数えれば、暗記に頼らず答えが出ます。

03

外部結合ならどのテーブルでも全行残ると思い込む再受験者

LEFT OUTER JOINで全行が残るのは左表側だけで、右表のうち左表と一致しなかった行は結果に現れません。RIGHT OUTER JOIN・FULL OUTER JOINの挙動は本記事で公式文書と照合した範囲の外のため、出題されたら公式教材で別途確認してください。

具体例で使い分ける

例 1

左表の行が右表と一致しない場合(1対0)

顧客テーブルに顧客A・顧客B・顧客Cの3行があり、注文テーブルには顧客Aの注文が1件、顧客Bの注文が1件あるが、顧客Cの注文は1件もない場合です。

  • 内部結合では、結合条件(顧客ID一致)を満たす組み合わせだけが残るため、顧客A×注文1行、顧客B×注文1行の合計2行になり、注文のない顧客Cは結果に現れません。
  • LEFT OUTER JOINでは、この2行に加えて、右表(注文テーブル)に一致行がない顧客Cの行が、注文側をNULLで補った1行として残ります。
  • 結果として、内部結合は2行、LEFT OUTER JOINは2行+1行=3行になります。

結論: 一致しない顧客Cの行を結果から消すなら内部結合、NULLで補って残すならLEFT OUTER JOINです。

例 2

左表の1行が右表の複数行と一致する場合(1対多)

顧客テーブルに顧客A・顧客Bの2行があり、注文テーブルには顧客Aの注文が2件、顧客Bの注文が0件ある場合です。

  • 内部結合では、顧客Aの行が一致する注文の件数だけ複製され2行になり、注文のない顧客Bは結果に現れないため、合計2行です。
  • LEFT OUTER JOINでは、この2行に加えて、注文が無い顧客Bの行が注文側をNULLで補った1行として残ります。
  • 結果として、内部結合は2行、LEFT OUTER JOINは2行+1行=3行になります。

結論: 左表の1行が右表の複数行と一致する場合、内部結合・LEFT OUTER JOINとも一致した組み合わせの数だけ行が複製される点は共通で、違いは一致しなかった左表の行を残すかどうかです。

問題文から答えを選ぶ手順

  1. 1

    結合条件を確認する

    どの列を基準に2つのテーブルを結びつけるかを確認します。

  2. 2

    一致しない行をどう扱うか確認する

    結合条件に一致しない行を結果から除外するなら内部結合、右表に一致行がない左表の行も残すならLEFT OUTER JOINです。

  3. 3

    表の行数を実際に数える

    内部結合の結果行数は一致した組み合わせの数、LEFT OUTER JOINの結果行数はそれに一致しなかった左表の行数を足した数として、具体的な行を書き出して数えます。

  4. 4

    RIGHT・FULL OUTER JOINは範囲外として扱う

    本記事で公式文書と照合したのはLEFT OUTER JOINの挙動だけのため、RIGHT・FULL OUTER JOINが問われたら公式教材で別途確認します。

試験での見分け方

  • 1結合条件に一致する行の組み合わせだけを残すなら内部結合(INNER JOIN)。
  • 2右表に一致行がない左表の行も、右表側をNULLで補って残すなら外部結合のLEFT OUTER JOIN。
  • 3内部結合の結果行数は、結合条件を満たす組み合わせの数と一致する。
  • 4LEFT OUTER JOINの結果行数は、内部結合の結果行数に、一致しなかった左表の行数を足したものになる。
  • 5本記事で確認しているのはLEFT OUTER JOINの動作で、RIGHT OUTER JOIN・FULL OUTER JOINの挙動は扱わない。

誤答しやすい選択肢

内部結合と外部結合を『どちらも表をつなげる操作』とまとめて覚える

修正: 一致しない行を結果から消すか、NULLで補って残すかという扱いの違いを確認します。

外部結合ならどのテーブルの行も必ず全部残ると思う

修正: LEFT OUTER JOINで全行が残るのは左表側だけです。右表のうち左表と一致しなかった行は結果に現れません。

結合条件を確認せずに行数を数えようとする

修正: 先にどの列を基準に結合するかを確認してから、一致する組み合わせを書き出して数えます。

RIGHT・FULL OUTER JOINも同じ理屈で即答する

修正: 本記事で確認しているのはLEFT OUTER JOINの挙動のみです。RIGHT・FULL OUTER JOINは公式教材で個別に確認します。

確認問題

Q1顧客3行・注文2件(顧客Cの注文なし)を内部結合した結果は何行?

答え: 2行

結合条件に一致する顧客A・顧客Bの組み合わせだけが残り、注文のない顧客Cは結果に含まれません。

Q2同じ顧客3行・注文2件をLEFT OUTER JOINした結果は何行?

答え: 3行

内部結合の2行に加えて、注文が無い顧客Cの行が右表側NULLの1行として残ります。

Q3LEFT OUTER JOINの結果行数を求める式は?

答え: 内部結合の結果行数+一致しなかった左表の行数

一致した組み合わせの数に、右表と一致しなかった左表の行の数を足すことで、LEFT OUTER JOINの結果行数になります。

到達チェック

  • 内部結合を『結合条件に一致する行の組み合わせだけを残す』として説明できる
  • LEFT OUTER JOINを『一致しない左表の行もNULLで補って残す』として説明できる
  • 内部結合とLEFT OUTER JOINの結果行数を、具体例で実際に数えられる
  • LEFT OUTER JOINで全行が残るのは左表側だけだと説明できる
  • RIGHT・FULL OUTER JOINは本記事の確認範囲外だと認識している

よくある質問

Q内部結合と外部結合はどちらもSQLの結合方法?

A

はい。どちらもSQLの結合方法ですが、内部結合は一致する行だけを残し、LEFT OUTER JOINの外部結合は一致しない左表の行もNULLで補って残すという扱いの違いがあります。

Q外部結合にはLEFT以外もある?この記事はどこまで扱う?

A

外部結合にはLEFT・RIGHT・FULLがありますが、本記事はPostgreSQL公式文書で挙動を確認できているLEFT OUTER JOINの解説に限ります。RIGHT・FULL OUTER JOINの内容には触れていません。

Q結果の行数はどう数える?

A

内部結合は結合条件を満たす組み合わせの数、LEFT OUTER JOINはその数に一致しなかった左表の行数を足した数になります。具体的な行を書き出して数えると確実です。

Q試験ではどちらを先に確認する?

A

結合条件に一致しない行を結果から除外するか、それとも残すかを先に確認します。除外するなら内部結合、残すならLEFT OUTER JOINです。

執筆: ミナト編集部(運営者情報を見る)