2013-09-23 65 views
0
#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和名稱QUAL的值應該在主表進行更新。 我不想使用遊標 請問你們可以幫我嗎

+0

什麼插入前觸發器,比較'TomID'和'Name'並採取相應的行動? – Milen

回答

1

你可以使用MERGE聲明。 Reference

我想這會得到你想要的東西:

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

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

相關問題