MySQL の FULL OUTER JOIN の欠如とその回避策
問題:
FULL OUTER JOIN
を使用した MySQL クエリで構文エラーが発生しました。 クエリは FULL OUTER JOIN
を使用して複数のテーブルを結合しようとしました。この構文は一見正しいように見えますが、MySQL ではサポートされていません。
解決策:
MySQL は FULL OUTER JOIN
を直接サポートしていません。 解決策には、LEFT JOIN
と RIGHT JOIN
を UNION
ステートメントと組み合わせて使用して、この機能をエミュレートすることが含まれます。
FULL OUTER JOIN のエミュレート:
2 つのテーブル ( と t1
) の場合、t2
は次のように複製されます。FULL OUTER JOIN
<code class="language-sql">SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id;</code>
、t1
、t2
) の場合、同等のものは次のようになります:t3
<code class="language-sql">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;</code>
、LEFT JOIN
、および RIGHT JOIN
のこの再帰的アプリケーションは、MySQL の UNION
の動作を効果的に模倣し、この制限に対する実用的な回避策を提供します。FULL OUTER JOIN
以上がFULL OUTER JOIN で MySQL クエリが構文エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。