这是我在ms访问中的sql代码:
DELETE Table1.*
FROM Table1
INNER JOIN Table2 ON Table1.Field1 = Table2.Field1
我想在这里注意到Table1有很多列,但Table2只有一列。
我想删除Table1中Table1.Field1 = Table2.Field1
所有的行。
但是当我执行代码时,我收到此错误:无法从指定的表中删除。
但是,如果我使用SELECT
代替DELETE
,则可以正常显示行:
SELECT Table1.*
FROM Table1
INNER JOIN Table2 ON Table1.Field1 = Table2.Field1
但我想删除这些行。
答案 0 :(得分:2)
考虑一个子查询。 MS Access中的DELETE
个查询应该将删除行集作为完整的独立结果集。在您的尝试中,结果集是两个表,即使您只查看带有SELECT
子句的第一个:
DELETE Table1.*
FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2)
与ANSI对齐,不需要星号:
DELETE FROM Table1
WHERE Field1 IN (SELECT Field1 FROM Table2)
答案 1 :(得分:0)
我会选择将行的行ID选择为帮助程序表。 然后
delete from Table1 where table1.rowid = helpertable.rowid;
然后
delete from Table2 where table2.rowid = helpertable.rowid;
然后
drop helpertable;
答案 2 :(得分:0)
在操作查询中加入字段时,Access存在奇怪的问题。
请尝试以下操作以避免加入:
DELETE *
FROM Table1
WHERE DCount('Field1', 'Table2', 'Field1 = "' & Field1 & '"') <> 0