説明のために, 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