Обновление удаления и вставки в основную таблицу без использования курсоров?

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

MERGE (Transact-SQL)

Другие вопросы по тегам