Я пытаюсь скопировать строки из 1 таблицы в собственную копию, но только включая строки для учетных записей, которые существуют во второй таблице.Sql SubSelect With Multiple Keys
Это хорошо работает только с одним ключевым полем (счета), как показано ниже:
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)
В этом случае я пытаюсь вставить строки из исходной таблицы acpmstpf в схеме oldlibr на копию себя в newlibr, совпадающие строки на учетной записи/ветке 2 ключа (acpno/acpbrn) и ТОЛЬКО вставлять те строки, в которых учетная запись находится во второй таблице accinfo.
ЧТО Я ДЕЙСТВИТЕЛЬНО хочу сделать, это ТОЛЬКО вставить те строки, где ветка учетной записи & находится в accinfo, потому что, если только 2 ветки находятся в accinfo, а 100 на acpmstpf, она копирует все 100 строк.
Я знаю, что могу сделать это с помощью соединения, но тогда мне нужно будет указать все столбцы (которых может быть много - у меня этот сценарий для нескольких таблиц).
Есть ли способ, которым я мог бы это сделать и по-прежнему использовать подвыбор?
С вопросами SQL * всегда * тег СУБД вы используете. –
Спасибо Thorsten, не думал об этом, но на самом деле это DB2. –
Хорошо, я добавил тэг для вас. –