【发布时间】:2013-07-12 15:08:05
【问题描述】:
我已经尝试了很多不同的方法,但是在所有这些方法中都得到了奇怪的错误结果。我有一个事务主表:Transactions 和一个查询ArchiveDelete,它根据LastModifyDate 从临时表中查找新事务。我想删除 ConfirmationNumber in Transactions = ConfirmationNumber in 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 行。
我做错了什么?为什么这么难?
【问题讨论】:
标签: ms-access join sql-delete