本記事では、OUTER JOINについて解説します。
前回はINNER JOINについて解説しました。
今回では、LEFT JOINやRIGHT JOINなどの外部結合についてみていきましょう。
SQLのOUTER JOINとは?
OUTER JOINとは、外部結合を行うもののことです。
INNER JOIN(内部結合)では、結合時に一致しないデータが存在した場合、そのデータは表示しませんでした。
外部結合の場合は、一致しないデータがあっても、「NULL」を使って表示させます。
そのため、一致しないデータも含めて全て取得したい場合は、OUTER JOINを使います。
SQLのOUTER JOINの使い方
OUTER JOINの具体的な使い方についてみていきましょう。
次の項目に従って解説していきます。
- LEFT JOINで結合する
- RIGHT JOINで結合する
OUTER JOIN(外部結合)には大きく分けて、「LEFT JOIN」と「RIGHT JOIN」があります。
これら2つの違いを詳しく解説しましょう。
なお、本記事では『SQL初級編7』で作成したテーブルを利用します。『SQL入門編7』で演習用のテーブルを作っていない方は、【SQL初級編7】INNER JOINで内部結合を行う方法を理解しようを読んで予め作成してくださいね。
LEFT JOINで結合する
まず、OUTER JOINの中でも、LEFT JOINの使い方を解説します。
OUTER JOINとは、一致しないデータがあっても表示させるものです。
その中でも、LEFT JOINは、左のテーブルの方を全て表示させるものです。
具体例をみていきましょう。
○コード例
SELECT * FROM TEST2.Student LEFT JOIN TEST2.From ON from_id = From.id;
○実行結果

上記のSQL文は、StudentテーブルとFromテーブルをLEFT JOINで結合しています。
左のテーブル(Studentテーブル)のデータは全て表示させています。
ただしfrom_idが「4」のレコードには「NULL」が入っていますね。
これは、FROMテーブルにid=4のレコードがないためです。
このようにLEFT JOINでは、レコードがない場合、「NULL」を使って無理やり表示させます。
RIGHT JOINで結合する
RIGHT JOINはLEFT JOINとは逆に、右のテーブルの方を全て表示させるものです。
○コード例
SELECT * FROM TEST2.From RIGHT JOIN TEST2.Student ON From.id =from_id;
○実行結果

上記のコードは、FromテーブルにStudentテーブルを結合させています。
右のテーブル(Studentテーブル)は全てデータを表示させています。
ただし、idが「4」のレコードはFromテーブルにはないため、「NULL」が表示されています。
このようにRIGHT JOINは右のテーブルのみ全表示させます。
JOINについてのまとめ
ここまでJOINの種類を2つ解説しました。
- INNER JOIN:一致しないデータは取得しない
- OUTER JOIN:一致しないデータも取得する
- LEFT JOIN:左のテーブルは全て表示する
- RIGHT JOIN:右のテーブルは全て表示する
JOINは大きく「INNER JOIN(内部結合)」と「OUTER JOIN(外部結合)」に分けられます。
そして「OUTER JOIN」には、「LEFT JOIN」と「RIGHT JOIN」の2種類があるという訳です。
これらはそれぞれ仕様が異なるので、それぞれの違いを頭に入れておきましょう。
3つのテーブルを結合させる方法
ここからは3つのテーブルを結合させる方法を解説します。
3つ以上を結合させる場合もJOINを使って行います。
新しくテーブルを作成する
現在TEST2のデータベースには2つしかテーブルがないので、新しくテーブルを作りましょう。
下記のSQL文を実行し、TEST2のデータベースにClassテーブルを作り、データを入れてください。
○コード例
CREATE TABLE TEST2.Class(id int, teacher varchar(255));
INSERT INTO TEST2.Class(id, teacher)VALUES(1,"木村");
INSERT INTO TEST2.Class(id, teacher)VALUES(2,"近藤");
INSERT INTO TEST2.Class(id, teacher)VALUES(3,"桐山");
INSERT INTO TEST2.Class(id, teacher)VALUES(4,"高崎");
id | teacher |
1 | 木村 |
2 | 近藤 |
3 | 桐山 |
4 | 高崎 |
3つのテーブルを結合させる
3つのテーブルを結合させる方法を解説します。
3つのテーブルを結合させる場合は、JOINを2回使えば良いです。
○コード例
SELECT name,syussin,teacher FROM TEST2.Student JOIN TEST2.From ON from_id = From.id JOIN TEST2.CLASS ON class_id = CLASS.id;
○実行結果

上記のコードでは、JOINを2回使ってStudentテーブルとFromテーブル、そしてClassテーブルを結合させています。
このようにJOINを使えば3つ以上のテーブルも結合可能です。
まとめ
本記事では、OUTER JOINついて解説しました。
LEFT JOINやRIGHT JOINを使うと結果がどう変わるのかが、お分かり頂けたかと思います。
これでJOINの基礎は一通り理解できたことになります。
次回は、CASE式を解説していきます。