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 - 简单更新查询给出“操作必须使用可更新查询”错误的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Access 2007 中未正确处理查询部分的日期类型的更新集