如何在追加数据库附加重复记录的位置添加追加查询?

时间:2017-02-08 19:13:02

标签: sql ms-access

概述
我在Access数据库中使用附加查询,将数据从一个表移动到下一个表。

Appraoch 我有三个表,两个用于查询。这两个表是"操作和报价"和"工作订单已激活",第三个也是我追加数据的地方称为"工作订单和操作"。

问题
我可以成功地构建一个追加查询来向anonther表添加记录,但是无法将其记录到它不会附加重复记录的程度。一旦追加查询运行一次我想把它放到哪里它不会重新附加那些相同的记录。我尝试在crteiria中使用表达式构建器,但没有运气。我是SQL的新手,它似乎更直接前进,所以我想知道我能做些什么来使它与SQL一起工作而不是表达式构建器???

代码

INSERT INTO WorkOrdersAndOperations ( WorkOrderID, ProcessID, TimeMin, OperationID )
SELECT WorkOrdersActivated.WorkOrderID, OperationsAndQuotes.ProcessID, OperationsAndQuotes.TimeMin, OperationsAndQuotes.OperationID
FROM WorkOrdersActivated, OperationsAndQuotes
WHERE (((WorkOrdersActivated.WorkOrderID) Not In ([WorkOrdersActivated]![WorkOrderID])));

我的Where子句是我无法得到的,我的期望是,如果WorkOrderD已经在WorkOrdersAndOperations表中而不是它不应该附加。如果你现在不能告诉我我是SQL的新手,那么任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用not exists

INSERT INTO WorkOrdersAndOperations ( WorkOrderID, ProcessID, TimeMin, OperationID )
    SELECT woa.WorkOrderID, oq.ProcessID, oq.TimeMin, oq.OperationID
FROM WorkOrdersActivated as woa,
     OperationsAndQuotes as oq
WHERE NOT EXISTS (SELECT 1
                  FROM WorkOrdersAndOperations as woo
                  WHERE woo.WorkOrderID = woa.WorkOrderID AND
                        woo.ProcessID = oq.ProcessID AND
                        woo.OperationID = oq.OperationID
                 );