先に回答してくださっている方のおっしゃる通り、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
ご参考までに。
私の記憶ではmysqlは完全外部結合をサポートしていないような・・・
ただしUNIONでidを拾って、LEFT JOINを2度することで対応は可能です。
SELECT t1.*,t2.*
FROM (SELECT id from test1 union SELECT id from test2) AS SUB
LEFT JOIN test1 as t1 using(id)
LEFT JOIN test2 as t2 using(id)
ORDER BY SUB.id
お礼
完全外部結合というのですね。 mysqlで無いということで今後に期待します。 ありがとうございます。