どのような結合が実行されますか?完全な外部結合だと思いますか?
いいえ、通常の外部結合です。クエリは、ターゲットテーブルにソーステーブルにもある行がある場合と、ソーステーブルにターゲットテーブルにないレコードがある場合を知る必要があります。クエリは、ターゲットテーブルにはあるがソーステーブルにはない行に応答する必要がないため、双方向に移動するために外部結合は必要ありません。
ただし、not matched
がない場合、外部結合は実行されません。 句(これは完全に有効です)。オプティマイザは、その場合、内部結合で十分であることを認識できるほど賢いです。
WHEN MATCHED部分に関して:tの行がsの複数の行と一致するとどうなりますか?
複数の一致がある場合、一致ごとに更新が実行されます。これは、最後に来る更新がコミットに書き込まれることを意味します。順序を指定する方法がないため、この場合、更新のソースは事実上ランダムです(一致のセットから)。
@ Vincent Malgratが指摘したように、これは正しくありませんでした。複数の一致がある場合、Oracleは「ORA-40926:ソーステーブルに安定した行のセットを取得できません」というエラーを生成するようです。
一致しない部分に関しては、「sの行にtの対応がない場合」を意味すると思います。私は正しいですか?
正解です。