SQL 外部結合のサンプル(left outer join/right outer join)

SQLの外部結合のサンプルです。
left outer joinとright outer joinを使用します。

目次

外部結合(left outer join)

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

説明用のデータ

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

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

SQL文

上記テーブルに対してleft outer joinを使用してデータを抽出します。

4行目は、left outer joinです。
5行目は、上記2つのテーブルにあるuser_idとuser_cdを結合条件としています。

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;

 

結果は、以下のとおりです。
表の1,2行目は、上記SQLの5行目の条件に一致した行です。
表の3行目は、usersテーブルのみにある行です。usersテーブルにない項目の「user_cd」と「item_no」はNULLになります。
salesテーブルにあるuser_cd=99の行は抽出されません。

実行結果
user_id name user_cd item_no
1 鈴木 1 A001
1 鈴木 1 B001
2 田中 Null Null

 

外部結合(right outer join)

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

説明用のデータ

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

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

SQL文

上記テーブルに対してright outer joinを使用してデータを抽出します。

4行目は、right outer joinです。
5行目は、上記2つのテーブルにあるuser_idとuser_cdを結合条件としています。

SELECT
u.user_id,u.name,s.user_cd,s.item_no
FROM users u
right outer join sales s 
on u.user_id = s.user_cd;

 

結果は、以下のとおりです。
表の1,2行目は、上記SQLの5行目の条件に一致した行です。
表の3行目は、salesテーブルのみにある行です。salesテーブルにない項目の「user_id」と「name」はNULLになります。
usersテーブルにある"田中"の行は抽出されません。

実行結果
user_id name user_cd item_no
1 鈴木 1 A001
1 鈴木 1 B001
NULL NULL 99 D001

関連の記事

SQL INSERT文のサンプル
SQL UPDATE文とDELETE文のサンプル
SQL 重複行を表示しないサンプル(distinct)
SQL 複数の行をまとめる(集約関数/group by/having)
SQL 外部結合のサンプル(left outer join/right outer join)
SQL 副問合せのサンプル(サブクエリ)
SQL 自己結合のサンプル
SQL 内部結合のサンプル(inner join)
SQL UNIONのサンプル

△上に戻る