MySQL の FULL OUTER JOIN 制限の解決
MySQL にはネイティブ FULL OUTER JOIN
サポートがないため、構文エラーが発生することがよくあります。 このガイドでは、UNION
演算子を使用して同じ結果を達成する回避策を示します。
次のエラーが発生しました:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer join airports on airlines.iaco_code = airports.iaco_code full outer join' at line 4
MySQL と FULL OUTER JOIN
ステートメントとの互換性がないことを確認します。
この解決策には、2 つ以上のテーブルに対して FULL OUTER JOIN
を使用して UNION
をシミュレートすることが含まれます。
2 つのテーブル (t1 および t2):
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id
これは、LEFT JOIN
(t1
のすべての行、t2
の行と一致) と RIGHT JOIN
(t2
のすべての行、t1
の行と一致) の結果を結合し、効果的に複製します。 FULL OUTER JOIN
.
3 つのテーブル (t1、t2、および t3):
3 つのテーブルの場合、複雑さが増し、複数の UNION
操作が必要になります。
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id LEFT JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id RIGHT JOIN t3 ON t2.id = t3.id
このアプローチでは、考えられるすべての結合の組み合わせを体系的に組み合わせて、3 つのテーブルにわたって FULL OUTER JOIN
をエミュレートします。 特定のシナリオで実際の結合列を反映するように t1.id
と t2.id
を忘れずに調整してください。 この手法を使用すると、MySQL の制限を回避し、目的の FULL OUTER JOIN
機能を実現できます。
以上がMySQL に FULL OUTER JOIN サポートがないことを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。