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

时间:2019-04-05 16:19:10

标签: sql ms-access ms-access-2010 sql-delete

使用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]));

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

1 个答案:

答案 0 :(得分: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())