通过表A中的表A和插入/更新的SQL循环
问题描述:
存储过程循环遍历表“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
感谢
答
使用的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
学会忘记*循环*支持的操作集合尽可能。循环本来就很慢,并且DBMS引擎已经过优化,可以使用集合。当完全没有办法执行设置操作时,循环(AKA游标操作)应该是最后的手段。 –
谢谢Ken White,用简单的话来解释它。感谢你的努力。 Upvoted。 – Robin