FULL OUTER JOIN
![](https://assets.st-note.com/img/1647307722825-AVZMuWWkBV.png?width=1200)
testdb=# \d member
Table "public.member"
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+------------------------------------
no | integer | | not null | nextval('member_id_seq'::regclass)
name | text | | |
tel | integer | | |
groupno | integer | | |
boss | text | | |
testdb=# \d department
Table "public.department"
Column | Type | Collation | Nullable | Default
-----------+-------------------+-----------+----------+---------
groupno | integer | | |
groupname | character varying | | |
grouptel | character(11) | | |
boss | text | | |
testdb=# SELECT * FROM member FULL OUTER JOIN department USING (groupNo);
groupno | no | name | tel | boss | groupname | grouptel | boss
---------+----+------+------------+--------+-----------+-------------+------
2 | 1 | 佐藤 | 1201234567 | 佐々木 | 技術部 | 01219234569 | 田中
1 | 2 | 鈴木 | 1201234568 | 原田 | 営業部 | 01209234567 | 原田
4 | 3 | 渡辺 | 1201234569 | 天野 | | |
3 | | | | | 管理部 | 01209234566 | 岩本
(4 rows)
■OUTER JOIN (外部結合)
対象のテーブルから、結合キーの値が等しいデータに加えて、条件に一致しなかったデータも取得します。NATURALを用いると、名前が同じカラムを全て結合キーに指定します。
条件に一致しなかったデータをどのテーブルから取得するかはLEFT、LIGHT、FULLの中から選択します。
・LEFT:左側のテーブル(書式ではテーブル名1)から条件に一致しないデータを取得
・RIGHT:右側のテーブル(書式ではテーブル名2)から条件に一致しないデータを取得
・FULL:両側のテーブル(書式ではテーブル名1と2)から条件に一致しないデータを取得