説明のために, 2つのテーブルを定義しておきます.
| id | title |
|---|---|
| 1 | パーフェクトJava |
| 2 | パーフェクトJavaScript |
| 3 | パーフェクトPHP |
| id | price |
|---|---|
| 2 | 3456 |
| 3 | 3888 |
| 4 | 3200 |
完全外部結合した結果のテーブル
| id | title | id | price |
|---|---|---|---|
| 1 | パーフェクトJava | NULL | NULL |
| 2 | パーフェクトJavaScript | 2 | 3456 |
| 3 | パーフェクトPHP | 3 | 3888 |
| NULL | NULL | 4 | 3200 |
FULL OUTER JOIN句が利用可能なデータベースであれば,
SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.id = table2.id
これで片付くのですが, MySQLではFULL OUTER JOIN句をサポートしていないので, 左外部結合 (LEFT OUTER JOIN) と 右外部結合 (RIGHT OUTER JOIN) の結果の和集合 (UNION) をとることで, 完全外部結合を実現します.
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.id = table2.id UNION SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.id = table2.id