【问题标题】:Why am I getting a message to "Specify the table containing the records you want to delete" [duplicate]为什么我收到一条消息“指定包含要删除的记录的表”[重复]
【发布时间】:2021-12-22 08:13:44
【问题描述】:

在访问中,我正在尝试删除查询以从 tblA 中删除在 tblB 中具有相同数据的行 我尝试了以下方法,但它告诉我“指定包含要删除的记录的表

DELETE 
[tblA].fldA, 
[tblA].fldB, 
[tblA].fldC,
[tblA].fldD
FROM 
tblA 
LEFT JOIN 
tblB 
ON 
[tblA].fldA = tblB.ID
WHERE 
(([tblB].[ID]=[tblA].[fldA]) 
AND 
([tblB].[fldB]=[tblA].[fldB]) 
AND
([tblB].[fldC]=[tblA].[fldC]) 
AND
([tblB].[fldD]=[tblA].[fldD]));

我看不出我在这里缺少什么。 我也尝试了以下方法,但结果相同

DELETE 
[tblA]
FROM 
[tblA]
LEFT JOIN 
[tblB]
ON 
[tblA].fldA = tblB.ID
WHERE 
(([tblB].[ID]=[tblA].[fldA]) 
AND 
([tblB].[fldB]=[tblA].[fldB]) 
AND
([tblB].[fldC]=[tblA].[fldC]) 
AND
([tblB].[fldD]=[tblA].[fldD]));

【问题讨论】:

  • 语法是DELETE tablealias1 FROM tablealias1 LEFT JOIN tablealias2 ON ... WHERE ...而不是DELETE tablealias1.columnname1, tablealias1.columnname2, tablealias1.columnname3 FROM tablealias1 LEFT JOIN tablealias2 ON ... WHERE ...
  • 我尝试了你的建议,但我得到了同样的信息
  • 抱歉,错过了ms-access 标签。你可以试试DELETE tbla.* FROM tbla left join tblb on ...
  • 您提供的链接给了我答案。谢谢derpirscher

标签: sql ms-access-2010


【解决方案1】:

这样就解决了

DELETE 
FROM [tblA] AS T
WHERE Exists (SELECT * FROM tblB WHERE 
([tblB].[fldA]=T.[fldA]) 
AND 
([tblB].[fldB]=T.[fldB]) 
AND
([tblB].[fldC]=T.[fldC]) 
)

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 2011-10-06
    • 1970-01-01
    • 2022-09-23
    • 2020-08-08
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多