我尝试了很多不同的方法,但是在所有这些方面都会出现奇怪的错误结果。我有一个主事务表:Transactions
和一个查询ArchiveDelete
,它根据LastModifyDate
从临时表中查找新事务。我想在ConfirmationNumber
中的Transactions
= ConfirmationNumber
中删除ArchiveDelete
的交易。
我的第一次尝试很简单:
DELETE Transactions.*
FROM Transactions INNER JOIN ArchiveDelete ON Transactions.ConfirmationNumber = ArchiveDelete.ConfirmationNumber;
我收到错误消息:'无法从指定的表格中删除。'单击帮助是没用的。我对这些表拥有完全的权利。我试图将Google错误和一个建议改为运行:
DELETE Transactions.*
FROM Transactions Where Transactions.ConfirmationNumber in (Select ConfirmationNumber from ArchiveDelete)
但这需要永远,而且我没有一整天的简单删除。我只需要删除183个交易。
我还在此处尝试了使用存在删除: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行。
我做错了什么?为什么这么难?
答案 0 :(得分:2)
我相信因为ArchiveDelete
是一个查询可能是你遇到麻烦的原因。尝试制作一个临时表ArchiveDeleteTemp
(至少要测试)并改为使用它。
DELETE Transactions.*
FROM Transactions INNER JOIN ArchiveDeleteTemp ON Transactions.ConfirmationNumber = ArchiveDeleteTemp.ConfirmationNumber;