表A
-----------------------------------------------
FlowNo    CardNo    ShopNo  DateIn
表B
-----------------------------------------------
FlowNo    CardNo    ShopNo  DateIn
表A 与 表B 的结构完全一致!
需要实现的:1.把 表A  中符合某一条件的记录  insert   到     表B 中,
2.如果 表B中已经存在    表B.FlowNo = 表A.FlowNo     的记录,  则先删除表B中这些已经存的记录, 即保证 FlowNo的唯一性!!!
3.要求语句尽可能地精简且效率高,最好一个完整的语句就搞定

解决方案 »

  1.   

    我用一条语句搞不定.
    ----更新同名记录
    UPDATE b set CardNo = a.CardNo,ShopNo = a.ShopNo,DateIn = a.DateIn
    FROM B b inner join A a  on b.FlowNo = a.FlowNo
    ----插入不存在的记录
    INSERT into B 
    SELECT * from A where not exists(select 1 from B where FlowNo = A.FlowNo)
      

  2.   

    --删除B表的相同记录delete tableB  from tableA where tableA.FlowNo = tableB.FlowNo--插入最新的记录insert into  table 
      select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo  where tableB.FlowNo  is null 
      

  3.   

    楼上写掉了个字母,以此为准--删除B表的相同记录delete tableB  from tableA where tableA.FlowNo = tableB.FlowNo--插入最新的记录insert into  tableB 
      select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo  where tableB.FlowNo  is null
      

  4.   

    to hellowork(一两清风):
        用 UPDATE  不好使,表A中还有其它的好多的列呢,还是先删除再 insert 更方便to db_sky() :
        insert into  tableB 
      select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo  where tableB.FlowNo  is null
        用不着这么复杂吧
      

  5.   

    呵呵,本来想着UPDATE比DELETE效率能高些^^