Я знаю, что есть много сообщений на эту тему, но это немного отличается. У меня есть 2 таблицы variant_detail (vad)
и variant_external_analysis (vaea)
. vaea
в основном пуст, и мне нужно обновить его для всех строк в vad
. Если я вставляю в vaea
и строка уже существует, она дублирует строку и, таким образом, разбивает базу данных.
При тестировании на 1 строке я решил проблему с:
IF NOT EXISTS (SELECT vaea_vad_id FROM variant_external_analysis
JOIN variant_detail ON vad_id = vaea_vad_id
WHERE vad_variant_code = 16469)
BEGIN
INSERT variant_external_analysis (vaea_vad_id)
SELECT vad_id
FROM variant_detail
END
UPDATE variant_external_analysis
SET vaea_last_amended_on = GETDATE(), vaea_last_amended_by = 13, vaea_n_1 = 1
FROM variant_external_analysis
JOIN variant_detail ON vad_id = vaea_vad_id
WHERE vad_variant_code = 16469
Это прекрасно работает, пока я не удалю операторы WHERE, чтобы повлиять на всю таблицу Код ниже ОБНОВЛЯЕТ правильно, но теперь больше НЕ ВСТАВЛЯЕТ
IF NOT EXISTS (SELECT vaea_vad_id FROM variant_external_analysis
JOIN variant_detail ON vad_id = vaea_vad_id
WHERE vad_id = vaea_vad_id)
BEGIN
INSERT variant_external_analysis (vaea_vad_id)
SELECT vad_id
FROM variant_detail
END
UPDATE variant_external_analysis
SET vaea_last_amended_on = GETDATE(), vaea_last_amended_by = 13, vaea_n_1 = 1
FROM variant_external_analysis
JOIN variant_detail ON vad_id = vaea_vad_id
Возможно, мне не хватает чего-то простого.