背景是这样的
           我本地有一个数据库,有表T_A,外面有一个web Server的接口,我需要通过这个接口返回的数据,更新表T_A的信息。 接口所传过来的数据和我的表结构是一样的
          
           第一次,我下载了所有的数据,第二次,我需要匹配每条数据是否有变换,数据中任何一个字段的变化都需要跟新
       无变化则不处理,有变化则需要更新
       
          ----------------------------- 割掉 小JJ-----------------------------
   SQL被我遗忘了一万年,求大大赐语句,谢谢                 
      假设:T_A表中有字段 Id/AA/BB/CC      请以此实例回答,谢谢                 临时报佛教,求.....

解决方案 »

  1.   

    --假设你接口返回的表名叫T_B,列为ID,AA,BB,CCDELETE FROM T_A WHERE NOT EXISTS(
    SELECT 1 FROM T_B WHERE T_B.ID=T_A.ID
    )UPDATE T_A
    SET AA=T_B.AA
    ,BB=T_B.BB
    ,CC=T_B.CC
    FROM T_A 
    INNER JOIN T_B ON T_A.ID=T_B.IDINSERT INTO T_A
    SELECT * FROM T_B
    WHERE NOT EXISTS(
    SELECT 1 FROM T_A WHERE T_A.ID=T_B.ID
    )
      

  2.   


    --tb是你传过来的新表
    update T_A set AA=tb.AA,BB=tb.BB,CC=tb.CC
    from tb where T_A.id=tb.id and (T_A.AA=tb.AA or T_A.BB=tb.BB or T_A.CC=tb.CC)
      

  3.   

    --上面弄错了,tb是你传过来的新表
    update T_A set AA=tb.AA,BB=tb.BB,CC=tb.CC
    from tb where T_A.id=tb.id and (T_A.AA!=tb.AA or T_A.BB!=tb.BB or T_A.CC!=tb.CC)
      

  4.   

    update T_A set AA = tb.AA, BB=tb.BB , CC=tb.CC
    from tb
    where T_A.id=tb.id 
    and checksum(T_A.*) <> checksum(tb.*)