OracleのINNER JOIN 内部結合 【SQL】

OracleのINNER JOIN(内部結合)

Oralceで複数のテーブルを結合するには「JOIN」を使います。

結合には下記の種類があります。

  • 内部結合(INNER JOIN)
  • 外部結合(LEFT JOIN, RIGHT JOIN)

今回は、内部結合(INNER JOIN)について解説します。

内部結合は複数のテーブルを結合し、条件が一致したもののみを取得します。

外部結合は優先するテーブルは条件が一致しなくても取得しますが、内部結合はそうではありません。

参照:OracleのJOIN 外部結合(LEFT JOIN,RIGHT JOIN) 【SQL】

(INNER) JOIN ~

Oralceで内部結合するには、INNER JOIN句の前後に結合するテーブルを記述します。テーブル名の後にスペースを入れて別名を指定します。「INNER」は省略可能なので、ここでは省略します。(スピード重視)

「ON」は結合する列を指定します。列はテーブル名の別名を必ずつけておきます。

内部結合は複数のテーブルをそのまま結合し、一致したものを取得します。上記の例、(INNER) JOINでは{テーブル1}と{テーブル2}を結合し、一致したもののみ取得します。

「INNER」は省略可能なので、ここでは省略します。

内部結合は「JOIN」を使わず、結合条件をWHERE句に記述することもできます。



サンプルデータ

emp

empno empname
A001 佐藤花子
A002 田中太郎
A003 加藤一
A004 青木花
A005 藤田学

tokyo_aut

empno
A001
A005

osaka_aut

empno
A001
A002

例1. INNER JOINで結合する

e.empno e.empname tokyo osaka
A001 佐藤花子 A001 A001

「emp」テーブルと「tokyo_aut」「osaka_aut」テーブルの2テーブルを「JOIN」で内部結合しました。

3つのテーブル「emp」「tokyo_aut」「osaka_aut」テーブルに一致するレコードのみがSELECTされます。

例2. WHEREで結合する(JOINを使用しないパターン)

e.empno e.empname tokyo osaka
A001 佐藤花子 A001 A001

例1と同じ内部結合を「INNER JOIN」を使わずに書きました。

3つのテーブル「emp」「tokyo_aut」「osaka_aut」テーブルの結合条件をWHERE句に書きました。

以上、Oracleの内部結合「INNER JOIN」の使い方でした。

OracleのJOIN 外部結合(LEFT JOIN,RIGHT JOIN) 【SQL】