如何在ms访问中删除两个表中的匹配行?
这是在MS Access我的SQL代码:如何在ms访问中删除两个表中的匹配行?
DELETE Table1.*
FROM Table1
INNER JOIN Table2 ON Table1.Field1 = Table2.Field1
我想在这里注意到,表1有许多列,但表2只是一列。 我想删除Table1中的所有行,其中Table1.Field1 = Table2.Field1
。 但是,当我执行代码时,我得到这个错误:无法从指定的表中删除。
但是,如果我使用的SELECT
代替DELETE
它工作正常显示行:
SELECT Table1.*
FROM Table1
INNER JOIN Table2 ON Table1.Field1 = Table2.Field1
但我想删除这些行。
我会选择行的ID行到辅助表中。 然后
delete from Table1 where table1.rowid = helpertable.rowid;
然后
delete from Table2 where table2.rowid = helpertable.rowid;
然后
drop helpertable;
对不起,这不起作用,因为我想删除两个表之间的所有匹配行。 –
Err ...你没有加入'table2',所以肯定会失败 –
我是ms access的初学者,所以这个代码工作的解决方案是什么? DELETE Table1。* FROM Table1 INNER JOIN Table2 ON Table1.Field1 = Table2.Field1 –
访问连接在操作查询字段时,有奇怪的问题。
请尝试以下方法避免加入:
DELETE *
FROM Table1
WHERE DCount('Field1', 'Table2', 'Field1 = "' & Field1 & '"') <> 0
考虑一个子查询。 DELETE
MS Access中的查询应该具有删除行集作为完整的独立结果集。在你尝试的结果集是两个表,即使您只查看第一与SELECT
子句:
DELETE Table1.*
FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2)
和调整,以ANSI,不需要星号:
DELETE FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2)
我,如果你想知道”我已经在表上获得了某种锁定(对所有记录实际锁定,或者没有级联删除的多对多关系) - SQL应该可以工作(并且当我测试它时)。 https://support.office.com/zh-CN/article/I-get-the-error-message-Could-not-delete-from-the-specified-tables-20dec5e8-5402-4667-802d-523cf4923a46 –