SQL循环通过表A&在表B中插入/更新

时间:2016-04-22 21:34:33

标签: sql sql-server-2008 stored-procedures foreach cursor

存储过程中循环遍历表“A”和&的所有行的最佳方法是什么?如果记录存在于表“B”中,则按ID检查&取决于结果(在表B中找到或不在表格中)执行“插入”或“更新”到表“B”。

例如:

//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 个答案:

答案 0 :(得分:2)

在SQL 2008上使用MERGE INTO命令

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
;