根据表中的条件和另一个表中的字段删除记录

问题描述 投票:1回答:1

使用Access 2010中的设计视图创建以下查询。

查询运行并带来正确的记录,但在尝试运行它以删除记录时,我收到错误消息:

无法从指定的表中删除。

我试图删除状态为"I""p"的记录,年份等于存储在另一个表中的年份。

  • 表W:姓名,状态,年份
  • 表年:当年

我非常感谢您提供的任何帮助。

我尝试过以不同的方式构建查询,我搜索了类似于我的解决方案。我是Access的新手,之前从未使用过SQL。我只是在学习它

DELETE Tbl_W.*, Tbl_W.Status, Tbl_Year.[Current Year]
FROM Tbl_W, Tbl_Year
WHERE (((Tbl_W.Status)="p" Or (Tbl_W.Status)="i") AND ((Tbl_AGIFYear.[Current Year])=[current year]));

能够删除查询标识的记录。

sql ms-access ms-access-2010 sql-delete
1个回答
2
投票

在MS Access中,您一次只能从一个表中删除记录。也没有必要指定应删除的字段,因为只能删除整个记录。

鉴于以上信息,您的delete查询可能变为:

delete from tbl_w
where 
tbl_w.status in ("i", "p") and 
tbl_w.year in (select tbl_year.[current year] from tbl_year)

或者,如果您仅使用tbl_year提供包含当前年份的记录,您可以通过以下方式使用YearDate函数:

delete from tbl_w
where tbl_w.status in ("i", "p") and tbl_w.year = year(date())
© www.soinside.com 2019 - 2024. All rights reserved.