更新查询正在修改所有记录

时间:2020-09-22 20:44:30

标签: sql ms-access-2010

我有一个更新查询,该查询将比较两个表中的字段,如果该字段不同,则将新字段(table2)移到表1中。然后更新表中的“新建”,“已更改”,“现有”字段2为真。但是,发生的事情是将所有已更改且已存在的字段标记为true。它确实将更改的数据复制到表1中,但是由于某种原因,它会将所有导入的记录标记为true。

SQL

UPDATE [NAVAIR Deficiencies] INNER JOIN NAVAIR_Deficiencies_Temp 
ON [NAVAIR Deficiencies].[Unique Deficiency Code] = NAVAIR_Deficiencies_Temp.[Unique Deficiency Code] 
SET [NAVAIR Deficiencies].[Hull Q] = [NAVAIR_Deficiencies_Temp]![Hull Q],
    NAVAIR_Deficiencies_Temp.Changed = True, 
    NAVAIR_Deficiencies_Temp.Preexisting = True
WHERE ((([NAVAIR Deficiencies]![Hull Q])<>[NAVAIR_Deficiencies_Temp]![Hull Q])) 
   OR (((Nz([NAVAIR Deficiencies]![Hull Q]))<>[NAVAIR_Deficiencies_Temp]![Hull Q]));

1 个答案:

答案 0 :(得分:0)

是的,查询正在按预期执行。您的INNER JOIN后面带有WHERE语句,这意味着任何不满足ON条件以及WHERE语句的条件的记录都不会成为结果集的一部分。然后,您为该结果集指定了[NAVAIR Deficiencies].[Hull Q] = [NAVAIR_Deficiencies_Temp]![Hull Q]NAVAIR_Deficiencies_Temp.Changed = TrueNAVAIR_Deficiencies_Temp.Preexisting = True,这意味着您的输出将具有来自临时表的Hull Q值,True for Changed,True for早已存在于所有记录中,其中Hull Q在临时表中的值与在基础表中的值不同。

相关问题