0

我使用 Access 2010 并且已经尝试解决此问题一段时间了。我的查询如下,我收到“操作必须使用可更新查询”错误。

UPDATE ServiceDetRules SET DuplicateOf = (SELECT ID FROM ServiceDetRulesDuplicates WHERE ServiceDetRules.[ServiceID] = ServiceDetRulesDuplicates.[ServiceID])
WHERE (SELECT NumberOfDups from ServiceDetRulesDuplicates) IS NOT NULL;

有什么想法吗?

4

2 回答 2

0

首先,Access(ACE、Jet 等)不支持SET子句中的子查询,尽管 SQL-92 标准允许这样做。有关详细信息,请参阅此线程(如果不清楚,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];
于 2011-06-20T08:51:21.807 回答
0

在设计选项卡上,将查询类型更改为 UPDATE

于 2011-06-20T03:43:16.583 回答