1 つのテーブルからそれ自体のコピーに行をコピーしようとしていますが、2 番目のテーブルに存在するアカウントの行のみを含めます。
これは、以下のように 1 つのキー フィールド (アカウント) だけで問題なく機能します。
insert into newlibr.acpmstpf
select * from oldlibr.acpmstpf as source
where not exists
(select *
from newlibr.acpmstpf as target
where target.acpno = source.acpno
and target.acpbrn = source.acpbrn
and target.acpitm = source.acpitm)
and source.acpno in (select account from accinfo)
この場合、スキーマ oldlibr の元のテーブル acpmstpf から newlibr のそれ自体のコピーに行を挿入しようとしています。2 つのキー アカウント/ブランチ (acpno/acpbrn) の行を一致させ、アカウントが 2 番目にある行のみを挿入します。テーブルaccinfo。
私が本当にやりたいことは、アカウントとブランチが accinfo にある行のみを挿入することです。これは、accinfo にブランチが 2 つしかなく、acpmstpf に 100 ある場合、100 行すべてをコピーするためです。
結合を使用してこれを行うことができることはわかっていますが、すべての列を指定する必要があります (これは多数になる可能性があります。いくつかのテーブルに対してこのシナリオがあります)。
これを行い、サブセレクトを使用する方法はありますか?