0

我已经尝试了很多不同的方法,但是在所有这些方法中都得到了奇怪的错误结果。我有一个事务主表:Transactions和一个查询ArchiveDelete,它从基于LastModifyDate. 我想删除ConfirmationNumberin Transactions= ConfirmationNumberin 的交易ArchiveDelete

我的第一次尝试很简单:

DELETE Transactions.*
FROM Transactions INNER JOIN ArchiveDelete ON Transactions.ConfirmationNumber = ArchiveDelete.ConfirmationNumber;

我收到一个错误:“无法从指定的表中删除。” 点击帮助是没有用的。我对这些表拥有完全的权利。我试图用谷歌搜索错误,一个建议是运行它:

DELETE Transactions.*
FROM Transactions Where Transactions.ConfirmationNumber in (Select ConfirmationNumber from ArchiveDelete)

但这需要很长时间,而且我没有一整天的时间进行简单的删除。我只需要删除 183 笔交易。

我还在这里尝试了使用 Exists 删除:How to delete in MS Access when using JOIN's?

DELETE Transactions.*
FROM Transactions 
Where Exists(Select 1 from ArchiveDelete Where ArchiveDelete.ConfirmationNumber = Transactions.ConfirmationNumber) = True

但现在它想删除我表中的所有 47073 行,而不仅仅是匹配的 183 行。

我究竟做错了什么?为什么这么难?

4

1 回答 1

2

我相信因为ArchiveDelete查询可能是您遇到麻烦的原因。尝试制作一个临时表ArchiveDeleteTemp(至少进行测试)并改用它。

DELETE Transactions.*
FROM Transactions INNER JOIN ArchiveDeleteTemp ON Transactions.ConfirmationNumber = ArchiveDeleteTemp.ConfirmationNumber;
于 2013-07-12T16:04:49.490 回答