読んでみると、これはExplicit vs Implicit SQL Joinsの重複では ない 。 答えは関連しているかもしれませんが(あるいは同じかもしれませんが)、質問は異なります。
何が違うのか、何がそれぞれに入るべきなのか。
私が理論を正しく理解していれば、クエリ・オプティマイザは両方を互換的に使用することができるはずです。
両者は同じものではありません。
これらのクエリを考えてみましょう。
SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
WHERE Orders.ID = 12345
と
SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
AND Orders.ID = 12345
1つ目は、注文番号 12345
の注文と、もしあればその行を返します。 2つ目はすべての注文を返しますが、注文番号 12345
に関連する行がある場合のみです。
INNER JOIN`では、これらの句は実質的に同等です。しかし、同じ結果を出すという意味で機能的に同じだからといって、この2種類の句が同じ意味を持つとは限りません。