insert into main 
select * from modi t where not exists( select 1 from main where a=t.a and b=t.b and c=t.c)

解决方案 »

  1.   

    对不起, 没说清楚.根据字段 a 的标识, 将 MODI 表的相关数据更新到 MAIN 中.
      

  2.   

    --那你要合计,最大的一条,最小的一条,还是其他?--下面是要合计
    update main set b=b.b,c=c.c
    from main a join (select a,b=sum(b),c=sum(c) from modi group by a) b on a.a=b.a
      

  3.   

    结果为 MAIN:
    a b c
    1001 555 999
    1002 333 333
      

  4.   

    --上面的错了一点:--用合计更新
    update main set b=b.b,c=b.c
    from main a join (select a,b=sum(b),c=sum(c) from modi group by a) b on a.a=b.a
    --用modi的最后一条更新
    update main set b=b.b,c=b.c
    from main a join modi b on a.a=b.a
      

  5.   

    --根据楼主的结果,那就是我的第二种处理--下面是数据测试--测试数据
    declare @MAIN table(a int,b int,c int)
    insert into @main
    select 1001,555,666
    union all select 1002,444,333declare @modi table(a int,b int,c int)
    insert into @modi
    select 1001,555,667
    union all select 1002,333,333
    union all select 1001,555,999--更新处理
    --用modi的最后一条更新
    update @main set b=b.b,c=b.c
    from @main a join @modi b on a.a=b.a--显示结果
    select * from @main/*--测试结果
    a           b           c           
    ----------- ----------- ----------- 
    1001        555         999
    1002        333         333(所影响的行数为 2 行)
    --*/
      

  6.   

    update main set b=
    (select max(c)) from MODI  group by a)
    where a=MODI.a
      

  7.   

    自己解决了, 使用
    select IDENTITY(int, 1,1) AS ID_Num,*
    into modi_2
    from modi
    为modi更正数据文件加上 ID, 然后使用循环语句根据 ID 逐条更新即可......