Вставка строк из одной таблицы в другую, где происходит совпадение

#sql #sql-server #tsql #bulkinsert

#sql #sql-сервер #tsql #bulkinsert

Вопрос:

У меня есть две таблицы PRODUCTION_HISTORY и BULK_INSERT . Я пытаюсь вставить значения из TEST_Custom_DataSets столбца из BULK_INSERT таблицы в CUSTOM_DATASETS в PRODUCTION_HISTORY таблицу, где WELL_KEY совпадения, но я получаю следующую ошибку:

Состоящий из нескольких частей идентификатор «dbo.Не удалось привязать «PRODUCTION_HISTORY.WELL_KEY».

Ниже приведен мой запрос:

 INSERT INTO [dbo].[PRODUCTION_HISTORY] (CUSTOM_DATASETS)
SELECT Test_Custom_DataSets 
FROM [dbo].[BULK_INSERT]
WHERE [dbo].[BULK_INSERT].WELL_KEY = dbo.PRODUCTION_HISTORY.WELL_KEY
  

Любой совет был бы высоко оценен!

Комментарии:

1. Используйте join в вашем операторе select.

2. Я не вижу таблицу dbo.PRODUCTION_HISTORY в вашем запросе.

Ответ №1:

Уверен, вам просто нужно объединить эти две таблицы вместе в вашем операторе select.

 INSERT INTO [dbo].[PRODUCTION_HISTORY] (CUSTOM_DATASETS) 
SELECT Test_Custom_DataSets 
FROM [dbo].[BULK_INSERT] AS bi
JOIN dbo.PRODUCTION_HISTORY AS ph 
    ON bi.WELL_KEY = ph.WELL_KEY
  

Комментарии:

1. Таким образом, он выполнен хорошо, но также обновил все значения null вплоть до 76 тыс. строк. Есть ли способ обновлять только те, у которых данные well_key не равны null? Спасибо

Ответ №2:

Я подозреваю, что вы хотите обновить, а не вставить:

 UPDATE ph
    SET CUSTOM_DATASETS = bi.Test_Custom_DataSets
    FROM [dbo].[PRODUCTION_HISTORY] pn JOIN
         [dbo].[BULK_INSERT] bi
         ON bi.WELL_KEY = pn.WELL_KEY;