SQL 外部結合とは(left outer joinとright outer join)

SQLの外部結合のleft outer joinとright outer joinついてです。

目次

外部結合とは 

テーブルを結合するとき、
「結合する条件が一致した行」+「結合する条件に一致していないが指定した片方のテーブルにある全ての行」を表示します。

説明用のデータ

次の2つのテーブルがあるとします。

SELECT * FROM users;
usersテーブル
user_id name
1 鈴木
2 田中
SELECT * FROM sales;
salesテーブル
user_cd item_no
1 A001
1 B001
99 D001

 

外部結合(left outer join)

select  項目  from「テーブルA 」left  outer  join 「テーブルB」on  結合する条件
  • left outer joinは、左外部結合と呼ばれます。
  • 以下の2点を満たす行を表示します。
    ・「テーブルA」と「テーブルB」で条件が一致した行
    ・結合する条件に一致していない「テーブルA」にある全ての行

サンプル

サンプルのSQL文です。
4行目は、left outer joinがあります。
5行目は、上記2つのテーブルにあるuser_idとuser_cdを結合条件としています。
実行結果には、usersテーブルにのみある田中さんの行があります。usersテーブルにない項目の「user_cd」と「item_no」はNULLになります。
salesテーブルにあるuser_cd=99の行は結合条件に一致していないので表示されていません。

SELECT
u.user_id,u.name,s.user_cd,s.item_no
FROM users u
left outer join sales s 
on u.user_id = s.user_cd;
実行結果
user_id name user_cd item_no
1 鈴木 1 A001
1 鈴木 1 A002
2 田中 Null Null

 

外部結合(right outer join)

select  項目  from「テーブルA」right outer join「テーブルB」on  結合する条件
  • right outer joinは、右外部結合と呼ばれます。
  • 以下の2点を満たす行を表示します。
    ・「テーブルA」と「テーブルB」で条件が一致した行
    ・結合する条件に一致していない「テーブルB」にある全ての行

サンプル

サンプルのSQL文です。
4行目は、right outer joinがあります。
5行目は、上記2つのテーブルにあるuser_idとuser_cdを結合条件としています。
実行結果には、salesテーブルにのみあるuser_cd=99の行があります。salesテーブルにない項目の「user_id」と「name」はNULLになります。
usersテーブルにある田中さんの行は結合条件に一致していないのでありません。

SELECT
s.user_id,u.name,s.sales_no,s.item_no,s.price
FROM users u
right outer join sales s 
on u.user_id = s.user_id;
実行結果
user_id name user_cd item_no
1 鈴木 1 A001
1 鈴木 1 A002
NULL NULL 99 D001

関連の記事

SQL 内部結合とは (inner join)
SQL 自己結合とは
SQL 副問合せのサンプル(サブクエリ)
SQL UNIONとは
SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル




△上に戻る