更新来自更新表的表数据 - 使用merge-sql server和我的sql

时间:2015-10-22 15:58:40

标签: mysql sql-server merge

我有两个表至少有25列。

  1. 客户
  2. updated_customers
  3. 列名称相同。

    每天我都会对列进行一些更改 一些被添加,一些被删除,一些被更改 我想使用merge来更新客户(目标表)来自updated_customers(源表)。

    合并代码就是:

    merge into customers trg
    using 
    (
    select 
        [customerid]
        ,[type]
        ,[first_name]
        ,[Last_Name]
        ,[Email]
        ,[Phone]
        ,[sale_status]
        ,[verification]
        ,[campName]
    From updated_customers ) src
    
    on src.[ customerid] =trg.[ customerid] 
    
    when matched then
    update set
        trg.[ customerid]=src.[ customerid]
        ,trg.[ type]=src.[ type]
        ,trg.[ first_name]=src.[ first_name]
       ,trg.[ Last_Name]=src.[ Last_Name]
        ,trg.[ Email]]=src.[ Email]]
        ,trg.[ Phone]=src.[ Phone]
        ,trg.[ sale_status]=src.[ sale_status]
        ,trg.[ verification]=src.[ verification]
        ,trg.[ campName]=src.[ campName]
    
    
    
    when not matched then
    insert(trg.[customerid],trg.[ type]…)
    values(src.[ customerid],src.[type]…);
    
    END
    
    
    merge into customers as trg
    using 
    (
    select 
        distinct [customerid]
        from updated_customers) src
    
        on src.[customerid] =trg.[customerid] 
    
        when not matched then
        insert(customerid, …..)
        values(src.[customerid],…));
    
    
    
     END
    

    我如何一次为所有列做到这一点?

    检查行中的更改

    如果没有改变 - 什么也不做。

    如果更改 - 更新更改并以某种方式标记。

    如果添加(那不是问题)。

    我至少有10张表来做同样的事情。

0 个答案:

没有答案