2011-06-20 96 views
0

我使用Access 2010,並且現在一直在嘗試解決此問題。我的查詢如下,我得到一個「操作必須使用可更新的查詢」錯誤。我可以根據MSAccess中的條件將查詢中的列拖入表中

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

有什麼想法?

回答

0

在設計選項卡,更改查詢類型,不需要更新

+0

查詢類型已經UPDATE –

0

首先,接入(ACE,噴氣機,等等)不支持SET子句中的子查詢,即使SQL-92標準允許它。有關詳細信息,請參見this thread(如果不明確,Access會強制您使用其專有的UPDATE..JOIN..SET語法,並且必須相應地重新編寫您的UPDATE語句)。

其次,WHERE子句看起來很可疑,因爲子查詢返回的是行而不是標量值。這裏有一個sugegsted修復:

WHERE EXISTS (SELECT NumberOfDups FROM ServiceDetRulesDuplicates);


試着這麼做:

UPDATE ServiceDetRules 
     INNER JOIN ServiceDetRulesDuplicates 
      ON ServiceDetRules.[ServiceID] = ServiceDetRulesDuplicates.[ServiceID]  
    SET ServiceDetRules.[DuplicateOf] = ServiceDetRulesDuplicates.[ServiceID]; 
+0

所以我需要找出加入使用?我試圖這樣做,它給了我同樣的錯誤。... UPDATE ServiceDetRules INNER JOIN ServiceDetRulesDuplicates ON ServiceDetRules。[ServiceID] = ServiceDetRulesDuplicates。[ServiceID] SET ServiceDetRules。[DuplicateOf] =(SELECT ID FROM ServiceDetRulesDuplicates)WHERE EXISTS(從ServiceDetRulesDuplicates中選擇NumberOfDups); –

+0

@PayDay Pat:查看更新的答案,但我並不真正使用Access專有語法。 – onedaywhen

+0

仍是同樣的問題。它究竟需要成爲一個可更新的查詢? –

相關問題