【发布时间】:2021-09-09 06:45:52
【问题描述】:
我是 VBA 新手,想从表 PLTotals 中删除所有条目,其中 Total_Row_ID 列与另一个表 PLLabelsAndFormulas 中的 ID 列匹配
**PLTotals** TABLE
ID, Total_Row_ID, Member_Row_ID
**PLLabelsAndFormulas** TABLE
ID, Company_ID, Row_Label, etc....
据我了解,我可以使用 INNER JOIN 来做到这一点,但我尝试过的一切都失败了。
首先我尝试了这个:
Dim accessQuery as string
accessQuery = "DELETE PLTotalsRows.ID FROM PLTotalsRows " & _
"LEFT JOIN PLLabelsAndFormulas ON PLTotalsRows.Total_Row_ID = PLLabelsAndFormulas.ID " & _
"WHERE PLLabelsAndFormulas.Company_ID = " & companyId
这样我得到了错误:
需要指定要删除的表
我也试过这个:
accessQuery = "DELETE PLTotalsRows.* FROM PLTotalsRows WHERE " & _
"EXISTS (SELECT [ID] FROM PLLabelsAndFormulas WHERE PLLabelsAndFormulas.ID = PLTotalsRows.Member_Row_ID) = True"
第二个没有报错,但是记录没有被删除。
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
表是 PLTotals 还是 PLTotalsRows? Member_Row_ID 是 ID 主键的外键链接吗?还是 Total_Row_ID 是外键?编辑问题以将示例数据显示为文本表。试试 IN():
"DELETE FROM PLTotalsRows WHERE Member_Row_ID IN (SELECT ID FROM PLLabelsAndFormulas WHERE PLLabelsAndFormulas.Company_ID =" & companyID & ")" -
或者应该是
Total_Row_ID IN (...)