从多个表中删除数据
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 子句中指定列 - 删除总是处理整行。
【讨论】:
以上是关于从多个表中删除数据的主要内容,如果未能解决你的问题,请参考以下文章