存在表A
   NO     KP_NO    LOT_ID    NAME    INSERT_TIME ……
   1       aaa      ppp       sdsad   20081022
   2       bb      ooo        fdfd    20081022
   3       vvv      yyg        dg     20081021 
   4       ggg     rtr         sd     20081021 
   5       tt      qqq         nn     20081020   .
   .
   .
其中 表A所有字段都不受唯一性约束, 假设表A 有几十个字段 , A.NO有几百行
现在以插入几百行数据
 其中  NO=A.NO  KP_NO=A.KP_NO …… ,只有LOT_ID<>A.LOT_ID有没有比较简单的SQL语句实现
 十分感激!!!!

解决方案 »

  1.   

    insert into tablename
      (NO, KP_NO, NAME, INSERT_TIME ……)
      select (NO, KP_NO, NAME, INSERT_TIME ……) from a;
    先插入相同的那些字段。再插那个不同的。
      

  2.   

    merge into table1 t
    using (select * from table2) t2
    on (t.ID=t2.ID.....)
    when matched then
    update set t.col...
    wher not matched then 
    insert (t.ID,t.COl)
    values(t2.ID,t2.COl)--存在更新不存在新增时;可用以上语法
      

  3.   

    补充:那个不同的字段是另外的一个 LOT_ID 
    是相同的一个LOT_ID
    我是用一个  类似  INSERT  表A  SELECT  * FROM  表A WHERE ……
    的语句完成
    而不是一一把字段名写一遍
      

  4.   

    但是插入的是完全相同的数据,UNDATE时还得不能改插入前的数据
    有没有比较直接的方法?