Объединить, чтобы создать уникальный идентификатор и проверить в другой таблице - PullRequest
0 голосов
/ 13 декабря 2018

друзья, я ищу решение, где у меня есть две таблицы (Tab1 и Tab2).Оба имеют одинаковые поля (F1, F2, F3, F4).Если я объединяю F2, F3, F4, я получаю уникальную запись.Tab1 (Source) имеет 10 записей, а Tab2 (Dest) имеет 2 записи.Я хотел бы создать уникальный идентификатор на вкладке «Источник» и сделать то же самое на вкладке «Назначение», затем проверить, какая запись недоступна на вкладке «Назначение», и добавить ее.Таким образом, записи будут перемещаться из Tab1 в Tab2, если у Tab2 нет таких записей.дайте мне знать, как я могу это сделать.

С уважением, Вик

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

При левом соединении выбираются все строки из таблицы1, у которых нет совпадающих строк в таблице2:

insert into table2 (f1, f2, f3, f4)
select t1.f1, t1.f2, t1.f3, t1.f4
from table1 t1
left join table2 t2
on t1.f2 = t2.f2 and t1.f3 = t2.f3 and t1.f4 = t2.f4
where t2.f2 is null and t2.f3 is null and t2.f4 is null
0 голосов
/ 13 декабря 2018

Если я правильно понимаю, нет смысла объединять поля.Вы можете просто использовать их в своих where критериях (или join критериях).

Вот один вариант с использованием not exists:

insert into tab2 (f1,f2,f3,f4)
select f1,f2,f3,f4
from tab1 t1
where not exists (
    select 1
    from tab2 t2
    where t1.f2 = t2.f2 and t1.f3 = t2.f3 and t1.f4 = t2.f4
    )

Это позволит вставить любые данные из tab1 в tab2, которые не существуют в tab2 на основе f2, f3, and f4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...