Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误

Posted

技术标签:

【中文标题】Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误【英文标题】:Access 2016 - Simple update query gives "Operation must use an updateable query" Error 【发布时间】:2017-11-07 02:42:46 【问题描述】:

我正在尝试将color 字段值从dress 表转移到purchase 表,因为我正在稍微更改我的数据库结构。

这是查询,很简单,但我一直收到错误。

UPDATE purchase
SET purchase.color = (SELECT dress.color
                      FROM dress INNER JOIN purchase
                      ON dress.ID = purchase.dressID);

我也尝试过不使用 JOIN 并将条件放在 WHERE 子句中,但我得到了同样的错误。

UPDATE purchase
SET purchase.color = (SELECT dress.color
                      FROM dress, purchase
                      WHERE dress.ID = purchase.dressID);

我还了解到此错误有时是由于文件为“只读”或其他权限问题,我已经尝试了所有方法,但似乎没有任何效果。

编辑:也试过这个,但我得到“缺少操作员”错误

UPDATE purchase
SET purchase.color = dress.color
FROM dress INNER JOIN purchase ON dress.ID = purchase.dressID;

【问题讨论】:

SQL Update woes in MS Access - Operation must use an updateable query的可能重复 谢谢,我浏览了一些线程,但这个有答案,一个非常奇怪的答案。我将在下面编辑答案。再次感谢! 【参考方案1】:

我认为您确实想要一个简单的相关子查询:

UPDATE purchase
    SET color = (SELECT d.color
                 FROM dress as d 
                 WHERE d.ID = purchase.dressID
                );

如果子查询中可能有重复,请尝试TOP 1

UPDATE purchase
    SET color = (SELECT TOP 1 d.color
                 FROM dress as d 
                 WHERE d.ID = purchase.dressID
                );

【讨论】:

您好,感谢您的回复,但如果您对如何查看我上面的答案感到好奇,我实际上已经解决了这个问题。 @丹尼尔。 . .您假定的解决方案没有达到您的预期。我建议您使用此答案中的版本。【参考方案2】:

感谢 Ken White 的链接,我找到了答案。

这个带有奇怪关键字“DISTINCTROW”的查询解决了这个问题。

UPDATE DISTINCTROW purchase
INNER JOIN dress ON purchase.dressID = dress.ID
SET purchase.color = dress.color;

【讨论】:

您是否尝试过不使用 DISTINCTROW 的查询?因为您的问题(第 3 次尝试)中的 JOIN 语法错误 - 它必须是 UPDATE x JOIN y SET x...,而不是 UPDATE x SET x... FROM x JOIN y

以上是关于Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何制作在 Access 2016 中运行更新查询的按钮

旧访问更新声明

在 MS Access 2007 中未正确处理查询部分的日期类型的更新集

Access DB:操作必须使用可更新的查询

Access 中 SQL 链接表上的 UPDATE 查询的“操作必须使用可更新查询”

使用 MS Access 更新表:操作必须使用可更新查询