SQL Server: объединение 2 таблиц, каждая строка которых имеет уникальное значение PKEY - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь объединить 2 таблицы с эквивалентным количеством столбцов, где каждый столбец назван одинаково. Tb1 - это таблица MS Access, которую я импортировал в SQL Server. Tb2 - это таблица, которая обновляется с tb1 ежеквартально и используется для генерации отчетов.

Я перешел в режим конструктора и убедился, что все типы данных столбцов одинаковы и имеют одинаковые имена. Аналогично, каждой строке в каждой таблице присваивается уникальное целочисленное значение в столбце с именем PKEY.

Что я хотел бы сделать, это добавить все новые записи, присутствующие в tb1 (таблица MS Access), к существующему tb2. Я считаю, что это можно сделать, написав запрос, который загружает все уникальные ключи, найденные в tb1 (AKA загружает все ключи, которые НЕ найдены в обеих таблицах, загружают только уникальные ключи, принадлежащие строкам в таблице доступа), а затем добавив эти записи в Tb2.

Не совсем уверен, с чего начать при написании этого запроса, я попробовал что-то вроде:

SELECT * 
FROM tb1 
WHERE PKEY <> Tb2.PKEY

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 октября 2019

Я бы порекомендовал not exists:

select tb1.*
from tb1
where not exists (select 1 from tb2 where tb2.pkey = tb1.pkey);

Вы можете поставить insert перед этим, чтобы вставить строки во вторую таблицу.

0 голосов
/ 03 октября 2019

Insert into tb2 Select * from tb1 Where tb1.id not in (select Id from tb2)

Приведенный выше скрипт вставляет записи в tb2 из результатов первого запроса select.

Запрос выбора возвращает только записи с идентификатором, который не указан в подзапросе выбора.

...