首页 > 解决方案 > 如何使用 JOIN 在 Access 中指定应从中删除记录的表?

问题描述

我有一个表和一个查询,qryAktuelleSchülerbilder包含tblSchülerbilder. 我的目标是删除tblSchülerbilder其中不存在的所有记录qryAktuelleSchülerbilder。我可以得到这些记录

SELECT tblSchülerbilder.*, qryAktuelleSchülerbilder.ID
FROM tblSchülerbilder
LEFT JOIN qryAktuelleSchülerbilder
ON tblSchülerbilder.ID = qryAktuelleSchülerbilder.ID
WHERE qryAktuelleSchülerbilder.ID Is Null;

当我现在切换到删除查询时,Access 中的设计视图看起来很好(我真的不知道,此时它对 SQL 视图做了什么),它显示为tblSchülerbilder.*Delete:From和删除:和标准:。但是当我执行查询时,它给了我.IDqryAktuelleSchülerbilderWhereIs NullSpecify the table containing the records you want to delete. (Error 3128)

我不知道再放哪里tblSchülerbilder,因为它已经设置为删除。网上的文章没有帮助,因为我已经tblSchülerbilder.*在select语句中指定了。

标签: sqlms-accesssql-deletems-access-2016

解决方案


你可以这样做NOT IN

DELETE FROM tblSchülerbilder
WHERE ID NOT IN (SELECT ID FROM qryAktuelleSchülerbilder)

或与NOT EXISTS

DELETE FROM tblSchülerbilder AS t
WHERE NOT EXISTS (
  SELECT 1 FROM qryAktuelleSchülerbilder AS q
  WHERE q.ID = s.ID
)

推荐阅读