内部結合では、違いは意味的な違いだけです。両方のクエリは、まったく同じクエリ プランとまったく同じ結果を生成する必要があります。
ただし、外部結合を使用している場合は、条件が where
にあるかどうかが重要です 句または on
on 節。
UPDATE li SET li.Description = im.Description FROM tbSupplierLineItem li RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode AND li.ProcessedDate >= CONVERT(DATE,GETDATE())
プレ>とは異なります
UPDATE li SET li.Description = im.Description FROM tbSupplierLineItem li RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode WHERE li.ProcessedDate >= CONVERT(DATE,GETDATE())
プレ>セマンティック レベルだけではありません。
最初のクエリは正しい結合の期待される結果を返しますが、2 番目のクエリは実際には内部結合から期待される結果を返します。
これは、正しいテーブルの値が左のテーブルに一致しないレコードがある場合は null になる可能性があり、任意の値を null (別の null を含む) と比較すると false になるため、基本的に右の結合を内部結合に変更しています。