同等の「ANSIJOIN」構文を使用してこれを説明します:
オプション1
SELECT *
FROM TXN
LEFT JOIN CHK
ON TXN.CHK_ID = CHK.CHK_ID
WHERE TXN.CURRENT = 'Y'
AND CHK.CURRENT = 'Y'
オプション2
SELECT *
FROM TXN
LEFT JOIN CHK
ON TXN.CHK_ID = CHK.CHK_ID
AND CHK.CURRENT = 'Y'
WHERE TXN.CURRENT = 'Y'
ご覧のとおり、オプション1では、定数述語が後に適用されます。 LEFT JOIN
テーブル式が指定されています。つまり、LEFT JOIN
の結果に基づいています。 。
オプション2では、定数述語の1つがLEFT JOIN
の一部です。 式。
LEFT JOIN
はどのように機能しますか 仕事ですか?
LEFT JOIN
のアイデア LEFTからすべての行を返すということです JOIN
の側面 結合述語が与えられた場合、反対側に一致する行があるかどうかに関係なく、式。したがって、オプション2では、CHK
に行が見つかったかどうかに関係なく CURRENT = 'Y'
を使用 TXN
の行の場合 、TXN
の行 まだ返されます。これが、オプション2でより多くの行を取得する理由です。
また、この例では、「ANSIJOIN」構文を使用する理由を説明する必要があります。メンテナンス/読みやすさの観点から、クエリが何をしているのかがはるかに明確になります。