вопрос не предоставляет никаких подробностей, поэтому я не могу предоставить фактический реальный код, только этот план атаки:
шаг 1 написать запрос, который будет ВЫБРАТЬ только те строки, которые вам нужно скопировать. Вам нужно будет JOIN
и / или отфильтровать (WHERE
) эти данные, чтобы включить только те строки, которые еще не существуют в целевой таблице. Сделайте список столбцов точно таким же, как столбцы таблицы назначения, в порядке столбцов и типе данных.
шаг 2 превратить этот оператор SELECT в INSERT, добавив INSERT YourDestinationTable (col1, col2, col3..)
перед выбором.
шаг 3 если вы хотите попробовать только одну строку, добавьте TOP 1
к выбранной части нового INSERET - SELECT command
, вы можете запускать эту команду столько раз, сколько необходимо с / без TOP
, поскольку он должен исключить любые строки, добавляемые вами с помощью условий JOIN
s и WHERE
в SELECT
в итоге у вас будет что-то похожее на:
INSERT YourDestinationTable
(Col1, Col2, Col3, ...)
SELECT
s.Col1, s.Col2, s.Col3, ...
FROM YourSourceTable s
LEFT OUTER JOIN SomeOtherTable x ON s.Col4=x.Col4
WHERE NOT EXISTS (SELECT 1 FROM YourDestinationTable d WHERE s.PK=d.PK)
AND x.Col5='J'
Я читаю вопрос как вставку пропущенных строк из исходной таблицы в таблицу назначения. Если изменения также необходимо перенести, перед выполнением вышеуказанных шагов вам нужно будет сделать UPDATE
таблицы назначения, присоединяющейся к исходной таблице. Это трудно объяснить без дополнительной информации о реальных таблицах, столбцах и т. Д.