2016-04-22 89 views
0

存储过程循环遍历表“A”的所有行的最佳方式&通过ID检查表“B”中是否存在记录&取决于根据结果​​(在表B中找到或没有)在表“B”中执行“插入”或“更新”。通过表A中的表A和插入/更新的SQL循环

例如:

//LOOP START 
    //if ID Exists in Table B. 
     //Take current row table a values and update table "B" 
    Else 
     //Take current row table a values and insert into table "B" 
//LOOP END 

感谢

+1

学会忘记*循环*支持的操作集合尽可能。循环本来就很慢,并且DBMS引擎已经过优化,可以使用集合。当完全没有办法执行设置操作时,循环(AKA游标操作)应该是最后的手段。 –

+0

谢谢Ken White,用简单的话来解释它。感谢你的努力。 Upvoted。 – Robin

回答

2

使用的SQL的MERGE INTO命令2008

MERGE INTO table_B as Target 
USING (
    Select 
     Id, Field1, Field2 
    FROM table_A) as Source 
ON Source.Id = Target.Id 
WHEN NOT MATCHED THEN 
    INSERT(Id, Field1, Field2) 
    VALUES(Source.Id, Source.Field1, Source.Field2) 
WHEN MATCHED THEN 
    UPDATE 
    SET 
     target.Id = Source.Id 
     ,target.Field1 = Source.Field1 
     ,target.Field2 = Source.Field2 
; 
+0

谢谢J格林,这个作品很有魅力。标记为答案。 – Robin

相关问题