我用Delphi+Access做了一个东东,想实现功能如下:
Adoquery1链接Table1,Adoquery2链接Table2,现在想把Table1中的数据(有1000多条)导入到Table2中去(Table2中的有些记录有可能和Table1中的记录重复),我用的是Adoquery2.Append;
Adoquery2.Fields[1]:=Adoquery1.Fields[1];
Adoquery2.Fields[2]:=Adoquery1.Fields[2];
.....................................
Adoquery2.post;
不过好像有两个缺点,一是速度慢,2是如果两个表的记录有重复的话,导入时就会出错,怎么解决啊?或者谁有更好一点的办法。谢谢了!

解决方案 »

  1.   

    给你提供个思路吧 
    你先选择出table1中没有在table2中的数据就是根据主键没有在后表中来实现的 not in应该是可以实现的 然后在把这些数据导入到table2中 利用 insert into table2 select (就是前面统计出来的没有存在于table2中的数据)
      

  2.   

    怎么样根据主键判断出Table1中没有在Table2中的数据那?能写段详细的代码吗?
      

  3.   

    SELECT * FROM Table1 WHERE Id Not In (SELECT Id FROM Table2)就应该可以的吧
    只是在最后导入的时候可能是需要给表起个别名就好了吧
      

  4.   

    同意angle097113的意见!
    标准的SQL语句在那里都执行的!
      

  5.   

    判断table1中有而table2中没有,看看这样行不:
      select * from table1 where xh not exists(select * from table2 where table1.xh=table2.xh)xh为table1和table2的主键值
      

  6.   

    INSERT INTO TABLE2 
    (SELECT * FROM Table1 WHERE Id Not In (SELECT Id FROM Table2))
    速度快,可实现你的要求.
      

  7.   

    INSERT INTO TABLE2 
    (SELECT * FROM Table1 WHERE Id Not In (SELECT Id FROM Table2))
    速度快,可实现你的要求.