我可以根据MSAccess中的条件将查询中的列拉入表中

时间:2011-06-20 01:16:23

标签: sql ms-access-2010

我使用Access 2010并且一直尝试解决此问题。我的查询如下,我得到“操作必须使用可更新的查询”错误。

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

有什么想法吗?

2 个答案:

答案 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];