質問: left join とright joinの合体版のような結合方法。 left join とright joinの合体版のような結合方法。 使用dbはmysql5.0.45です。 2つのテーブルの結合方式で、結合条件に合致しなかった場合、 両方のデータを結果セットに含めることはできますか? left joinだと、左側のテーブルのデータは結果に返ってきて、右側のデータはnullになります。 right joinだと、右側のテーブルのデータは結果に返ってきて、左側のデータはnullになります。 これを「左側データあり右側null」「左側null右側データあり」というレコードを混ぜて結果として返したいです。 具体的には、 以下二つのテーブルがあるとします。 table : test1 value id ------------------- ああ 3 いい 4 うう 5 table : test2 value id -------------------- aaa 1 bbb 2 ccc 3 ddd 4 id を結合条件のキーとして、以下のような結果を得たいです。 null null aaa 1 null null bbb 2 ああ 3 ccc 3 いい 4 ddd 4 うう 5 null null left joinだと以下の結果に、 select * from test1 left join test2 on test1.id=test2.id ああ 3 ccc 3 いい 4 ddd 4 うう 5 null null right joinだと以下の結果になってしまいます。 select * from test1 right join test2 on test1.id=test2.id null null aaa 1 null null bbb 2 ああ 3 ccc 3 いい 4 ddd 4 以上、ご教示お願い致します。
回答: 先に回答してくださっている方のおっしゃる通り、mysqlでは完全外部結合 をサポートしていないようです。 蛇足かもしれませんが、完全外部結合はまさしく質問者様がやりたい事そのままの ないようです。文法的には select * from test1 full outer join test2 on test1.id=test2.id で、oracleなどでは質問者様の要望通りの結果が返ってきます。 先に回答して下さっている方の別解として、right joinとleft joinをunionする というものもご紹介します。 質問者様の載せていた2つのsqlをunionするだけです。 select * from test1 left join test2 on test1.id=test2.id union select * from test1 right join test2 on test1.id=test2.id ご参考までに。