insert into T_EQUIPMENT_FACTORY (ID,NAME) select CJ_ID,CJ_MC from zj_nb1.T_CL_SCCJ where CJ_ID not in(select id from T_EQUIPMENT_FACTORY )

解决方案 »

  1.   

    zj_nb1.T_CL_SCCJ中的id中有的已经在T_EQUIPMENT_FACTORY 表中存在,检查一下,select count(*) from T_EQUIPMENT_FACTORY a,zj_nb1.T_CL_SCCJ b where a.id=b.cj_id
      

  2.   

    insert into T_EQUIPMENT_FACTORY (ID,NAME) 
      SELECT CJ_ID,CJ_MC 
        FROM zj_nb1.T_CL_SCCJ A
          WHERE NOT EXISTS ( SELECT 'X' FROM zj_nb1.T_CL_SCCJ B WHERE B.CJ_ID = A.CJ_ID)
      

  3.   

    回复人: liangwqtps(几百K) ( ) 信誉:100 我测试过是正确的,能解释下是为什么吗?
      

  4.   

    你的目标表中间已经有了你即将插入的数据,至少是与你将插入的数据使用的ID相同的数据,所以提示你插入错误.插入时避免插入这样的数据可以回避这个错误.
    另:
    你可以在插入之前用:select CJ_ID,CJ_MC from zj_nb1.T_CL_SCCJ where CJ_ID  in(select id from T_EQUIPMENT_FACTORY )查出目标表中与源表中ID相同的数据