我使用Access 2010并且一直尝试解决此问题。我的查询如下,我得到“操作必须使用可更新的查询”错误。
UPDATE ServiceDetRules SET DuplicateOf = (SELECT ID FROM ServiceDetRulesDuplicates WHERE ServiceDetRules.[ServiceID] = ServiceDetRulesDuplicates.[ServiceID])
WHERE (SELECT NumberOfDups from ServiceDetRulesDuplicates) IS NOT NULL;
有什么想法吗?
答案 0 :(得分:0)
在设计选项卡上,将查询类型更改为UPDATE
答案 1 :(得分:0)
首先,Access(ACE,Jet,等等)不支持SET
子句中的子查询,即使SQL-92标准允许它。有关详细信息,请参阅this thread(如果不清楚,Access会强制您使用其专有的UPDATE..JOIN..SET
语法,并且必须相应地重新编写UPDATE
语句。
其次,您的WHERE
子句看起来很可疑,因为子查询返回行而不是标量值。这是一个简单的解决方案:
WHERE EXISTS (SELECT NumberOfDups FROM ServiceDetRulesDuplicates);
尝试类似:
UPDATE ServiceDetRules
INNER JOIN ServiceDetRulesDuplicates
ON ServiceDetRules.[ServiceID] = ServiceDetRulesDuplicates.[ServiceID]
SET ServiceDetRules.[DuplicateOf] = ServiceDetRulesDuplicates.[ServiceID];