Обновление удаления и вставки в основную таблицу без использования курсоров?
#TEMP
TomID Value Name
634 38.000000 LI
634 38.000000 LI
670 38.000000 LI
722 37.240000 LI
723 37.240000 LI
724 37.240000 LI
634 2.000000 RAN
670 2.000000 RAN
722 1.960000 RAN
723 1.960000 RAN
724 1.960000 RAN
634 20.000000 TAU
670 20.000000 TAU
722 19.600000 TAU
723 19.600000 TAU
MainTable
TomID Value Name
166 77 RS
634 38 LI
723 19.600000 TAU
Используя временную таблицу, я хочу вставить все свои строки в основную таблицу. Условие: если TomID AND Name являются точными, значение должно быть обновлено в основной таблице. Я не хочу использовать курсоры, вы, ребята, пожалуйста, помогите мне
2 ответа
Вы можете использовать MERGE
заявление. Ссылка
Я думаю, что это даст вам то, что вы хотите:
MERGE MainTable AS M
USING (SELECT * FROM #temp) AS T
ON M.TomID = T.TomID AND M.Name = T.Name
WHEN MATCHED THEN UPDATE
SET M.Value = T.Value
WHEN NOT MATCHED THEN
INSERT(TomId, Value, Name)
VALUES(T.TomId, T.Value, T.Name);
- MERGE
Заявление поможет.
MERGE MainTable AS target
USING (SELECT TomID, Value,Name from #temp) AS source (TomID, Value, Name)
ON (target.TomID = source.TomID and target.Name = source.Name)
WHEN MATCHED THEN
UPDATE SET Value = source.Value
WHEN NOT MATCHED THEN
INSERT (TomID, Name,Value)
VALUES (source.TomID, source.Name,source.Value);