【问题标题】:What's wrong with my DELETE query我的 DELETE 查询出了什么问题
【发布时间】:2017-09-27 07:09:28
【问题描述】:

我有两个具有相同列的表。我正在尝试从 table2 '600_LONDON_NUMBER1' 中的 table1 '600_LONDON_NUMBER' 中删除行。下面是我的查询,但是当我运行它时,MS Access 说“无法从指定的表中删除”。请帮忙

DELETE [600_LONDON_NUMBER].*
FROM 600_LONDON_NUMBER INNER JOIN 600_LONDON_NUMBER1 
ON ([600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND ([600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUST Base NO]);

附:当我对同一查询运行 SELECT 语句时,它会毫无问题地检索数据。我还检查了数据不是 readonly 我可以使用简单的 DELETEquery 删除。

【问题讨论】:

  • 这是一个 MySQL 数据库?
  • DELETEFROM 之间的部分是不必要的
  • 在where子句中添加子查询删除数据
  • Delete with Join in MySQL的可能重复
  • 好的,这就是你在标签上流氓时得到的。现在你得到了一堆对你没用的 MySQL 答案和 cmets。

标签: sql database ms-access


【解决方案1】:

你可以使用EXISTS来解决它

DELETE 600_LONDON_NUMBER.* FROM 600_LONDON_NUMBER 
WHERE EXISTS (
     SELECT 1 FROM 600_LONDON_NUMBER1 
     WHERE [600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID) AND 
           [600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUSTBaseNO]
)

【讨论】:

  • SELECT 1 中的 1 代表什么?
  • EXISTS 运算符返回 true,如果 SELECT 至少返回一些东西,因此,标量值 1 就是那个东西。
  • 谢谢,我只需要添加正确的列名...下面的作品...DELETE 600_LONDON_NUMBER.* FROM 600_LONDON_NUMBER WHERE EXISTS (SELECT 1 FROM 600_LONDON_NUMBER1 WHERE [600_LONDON_NUMBER].GFCID = [600_LONDON_NUMBER1].GFCID AND [600_LONDON_NUMBER].CUSTBaseNO = [600_LONDON_NUMBER1].[CUST Base NO]);
猜你喜欢
  • 2016-10-29
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
相关资源
最近更新 更多