【问题标题】:Deleting records based on a criteria within the table and a field in another table根据表中的条件和另一个表中的字段删除记录
【发布时间】:2019-04-05 16:19:10
【问题描述】:

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

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

【问题讨论】:

  • 那里不需要Tbl_W.*, Tbl_W.Status, Tbl_Year.[Current Year]

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


【解决方案1】:

在 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())

【讨论】:

  • @DTM 不客气!如果我的回答充分回答了您的问题,请将答案标记为解决方案(如果您认为合适,请投票),以便其他浏览该网站的人看到该问题已解决。如果您不确定如何执行此操作,请参阅this article。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多