同じテーブルの 2 つの異なるレコードのすべての値をコピーしようとしているので、Merge Into を次のように使用します。
Merge into mytable target
using (select * from mytable where pk = :p1_original) source
on (target.pk = :p2_new)
WHEN MATCHED THEN
UPDATE SET ...
そしてそれはうまくいくので、私はMerge Intoこのように使用しようとしました:
Merge into mytable target
using mytable source
on (target.pk = :p2_new) and (source.pk = :p1_original)
WHEN MATCHED THEN
UPDATE SET ...
また、それも機能しますが、両方のスクリプトが特にパフォーマンスにおいて同じように機能するかどうかを尋ねたいですか?
Update彼らが後に使用するドキュメントで見た別の質問は、WHEN MATCHED THENSQLステートメントをさらに使用できますか、それとも使用を許可されていますUpdateか?
pk は mytable の主キー (整数) です p1_original は、コピー元のレコードの主キーの値です p2_new は、コピー先のレコードの主キーの値です