从多个表中删除数据

Posted

技术标签:

【中文标题】从多个表中删除数据【英文标题】:Delete data from multiple table 【发布时间】:2009-07-15 13:40:29 【问题描述】:

我有以下查询,它将

它不工作

请帮帮我:

DoCmd.RunSQL ("delete tblTesting,tblCodes,tblContract,tblScheduled,tblAbsense,tblClock from tblTesting,tblCodes,tblContract,tblScheduled,tblAbsense,tblClock where tblTesting.TestId = " & lstResults.Column(1) & " And tblTesting.Empid = " & Me.txtEmpIdSearch.Value & " And (tblTesting.Empid= tblCodes.EmpId Or tblTesting.Empid= tblContract.EmpId Or tblTesting.Empid= tblScheduled.EmpId Or tblTesting.Empid= tblAbsense.EmpId Or tblTesting.Empid= tblClock.EmpId ) ")

【问题讨论】:

【参考方案1】:

您的 SQL 语句错误。您不能以这种方式从多个表中删除。请逐表查看here 是如何完成的。

【讨论】:

记得按正确的顺序删除表格。当外键关系生效时,必须从最后一个删除父表。【参考方案2】:

您必须一次删除一个表 - 这正是 SQL 的工作原理。一些工具可以让你将多个 SQL 语句放在一个字符串中:

"delete table1 where RowId=123; delete table2 where RowID=456; delete table3 where RowID=789;"

刚刚验证此方法在 Access 中工作。因此,您正在为每个表查看单独的 DoCmd.RunSQL 行。

当然,除非这些都是父/子表,并且您可以打开级联删除。然后从父表中删除并享受魔法。

【讨论】:

【参考方案3】:

您需要一次处理一个表,但除了不能以这种方式从多个表中删除之外,您不应该在 delete 子句中指定列 - 删除总是处理整行。

【讨论】:

以上是关于从多个表中删除数据的主要内容,如果未能解决你的问题,请参考以下文章

根据Laravel Vue Js Api中的关系从多个表中删除数据

如何使用 Where 子句从多个表中删除多行?

如何跨多个模式从表中删除分区?

如何在单个查询中从两个表中删除数据

如何加快从大型数据库表中删除的速度?

从多个表中过滤并删除空列