现在有2个表暂且叫表1和表2吧,现在的需求是从表2查数据插到表1,表1的主键 id,name,old表2相同,
我的思路是 INSERT INTO 表1 SELECT 表2,
现在的问题是:后面的SELECT表2可能查出一条以上的记录,这样一来就有可能重复主键了
怎么样解决这个问题请教一下

解决方案 »

  1.   

    con.setAutoCommit(false);
    Statement stmt=con.createStatement();
    stmt.addBatch(sql);
    stmt.addBatch(sql2);
    stmt.addBatch(sql3);
    stmt.executeBatch();
    con.commit();
    你去网上看看这个 方法,也即是 executeBatch() ,这个可以解决你的问题。自己动手下,看看。
      

  2.   

    1. 如果ID是自增长的,那就不用管ID,SQL语句中不要包含ID。
    2. 如果ID不是自增长的,表2中增加一个自增长的字段作主键。如果必须保留表1中的ID,同样,表2再增加一个自增长的字段作主键。