У меня есть две идентичные таблицы SQL Server (SOURCE
и DESTINATION
) с множеством столбцов в каждой.Я хочу вставить в таблицу DESTINATION
строки из таблицы SOURCE
, которых еще нет в таблице DESTINATION
.Я определяю равенство между двумя строками, если совпадают все столбцы, кроме метки времени, столбца count и целочисленного первичного ключа.Поэтому я хочу вставить в DESTINATION
все строки в SOURCE
, которые еще не существуют в DESTINATION
, игнорируя столбцы count, timestamp и первичного ключа.
Как мне это сделать?
Спасибо за все вклады!Я решил использовать команду Merge, поскольку она структурирована так, чтобы разрешать обновления и вставки в одном операторе, и мне нужно было выполнить обновление отдельно.
это код, который работал:
Merge
into DESTINATION as D
using SOURCE as S
on (
D.Col1 = S.Col1
and D.Col2 = S.Col2
and D.Col3 = S.Col3
)
WHEN MATCHED
THEN UPDATE SET D.Count = S.Count
WHEN NOT MATCHED THEN
INSERT (Col1, Col2, Col3, Count, timestamp)
VALUES (S.Col1, S.Col2, S.Col3, S.Count, S.timestamp);
примечание: когда я впервые написал этот вопрос, я назвал таблицы AAA
и BBB
.Я отредактировал и изменил имена AAA
на SOURCE
И BBB
на DESTINATION
для ясности