1. ホーム
  2. sql

[解決済み] SQL JOIN - WHERE句とON句の比較

2022-03-20 02:56:20

質問

読み終わった後、これは ではなく の複製です。 明示的なSQL Joinと暗黙的なSQL Join . 答えは関連している(あるいは同じ)かもしれませんが 質問 は違います。


その違いと、それぞれに入れるべきものは何でしょうか?

私が理論を正しく理解していれば、クエリオプティマイザは両方を互換的に使用することができるはずです。

どのように解決するのですか?

この2つは同じものではありません。

これらのクエリについて考えてみましょう。

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

最初の例は、注文とその行を返します。 12345 . 2つ目は、すべての注文を返しますが、注文のうち 12345 には、それに関連する行が含まれます。

を使用すると INNER JOIN の場合、節は 事実上 と同じです。しかし、同じ結果を生むという意味で機能的に同じだからといって、この2種類の節が同じ意味を持っているとは限りません。