ウィキペディア:
「数学では、オペランドの順序を変更しても結果が変わらない場合、二項演算は可換です。これは多くの二項演算の基本的な特性であり、多くの数学的な証明がそれに依存しています。」
回答:
いいえ、左結合は可換ではありません。そして、内部結合はです。
しかし、それは実際にはあなたが求めていることではありません。
次のクエリですか:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(すべてid列に結合されています)次と同等です:
TableA INNER JOIN TableB
INNER JOIN TableC
LEFT JOIN TableD
UNION
TableA INNER JOIN TableB
LEFT JOIN TableC ON TableB.c_id IS NULL
LEFT JOIN TableD
回答:
また、いいえ。一般的に言って、ユニオンとジョインは実際には同じことを達成しません。場合によっては、それらを同等に記述できるかもしれませんが、私はあなたが示しているそれほど一般的な疑似SQLではないと思います。 ON構成は機能しないようです(MySQLではわからないことがあるかもしれません)
これは、同等だと思う単純化された一連のクエリです。
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
SELECT *
FROM TableA a
INNER JOIN
TableB b ON a.id = b.id_a
UNION
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
WHERE TableB.id IS NULL
編集2:
これはあなたに近いが本質的に同じである別の例です。
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
と同じです
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
INNER JOIN TableC c ON b.id = c.id_b
UNION
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
WHERE TableC.id IS NULL
しかし、私はまだ 私があなたの本当の質問に答えているとは思わないでください。