#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;