Access2002中(Office XP),有表两个WA_GZData、WA_GZData_Temp,结构相同。结构为(iYear, iMonth, cDept_Num, cPsn_Num)问题:将WA_GZData_Temp在WA_GZData中不存在的数据插入到WA_GZData,语句如何写?
这里的“不存在”是指(iYear, iMonth, cDept_Num, cPsn_Num)四个字段为组合条件。
下面语句在MS SQL 2000中能完成功能,但在Access中无效,请教高人,应该如何写?INSERT INTO WA_GZData(iYear, iMonth, cDept_Num, cPsn_Num)
SELECT iYear, iMonth, cDept_Num, cPsn_Num
FROM WA_GZData_Temp
WHERE NOT (  (iYear In(SELECT DISTINCT iYear FROM WA_GZData)) 
             AND (iMonth In(SELECT  DISTINCT iMonth FROM WA_GZData))  
             AND (cDept_Num In(SELECT  DISTINCT cDept_Num FROM WA_GZData)) 
             AND (cPsn_Num In(SELECT  DISTINCT cPsn_Num FROM WA_GZData)) );

解决方案 »

  1.   

    如果真的不能写的话,楼主可以换个思维
    用一个循环,一个一个去做判断肯定是可以的
    ===============================================================================
    Service Unavailable
      

  2.   

    INSERT INTO WA_GZData(iYear, iMonth, cDept_Num, cPsn_Num)
    SELECT iYear, iMonth, cDept_Num, cPsn_Num
    FROM WA_GZData_Temp
    WHERE NOT EXISTS(SELECT * FROM GZData WHERE  GZData.iYear=WA_GZData_Temp.iYear
    AND GZData.iMonth=WA_GZData_Temp.iMonth AND  GZData.cDept_Num=WA_GZData_Temp.cDept_Num AND GZData.cPsn_Num=WA_GZData.cPsn_Num)试试这个
      

  3.   

    INSERT INTO WA_GZData(iYear, iMonth, cDept_Num, cPsn_Num)
    SELECT iYear, iMonth, cDept_Num, cPsn_Num
    FROM WA_GZData_Temp
    WHERE NOT EXISTS(SELECT * FROM GZData WHERE  GZData.iYear=WA_GZData_Temp.iYear
    AND GZData.iMonth=WA_GZData_Temp.iMonth AND  GZData.cDept_Num=WA_GZData_Temp.cDept_Num AND GZData.cPsn_Num=WA_GZData_Temp.cPsn_Num)试试这个