我正在尝试基于另一个表(priceplan)中的字段更新字段。在priceplan中,我有两个字段,“guest”和“member”以及“price”列,但在本例中,我希望另一个表中的“price”根据“guest的值”进行更新。当我调试VS2008时,在System.Data.dll中出现“System.Data.OleDb.OleDbeException”类型的未处理异常。其他信息:操作必须使用可更新的查询。
我的陈述怎么了?

UPDATE Bill
SET Price = ( SELECT PricePlan.Price
              FROM PricePlan
              WHERE PricePlan.PricePlanName = 'Guest'
            )
WHERE EXISTS (Select PricePlan.Price
              FROM PricePlan
              WHERE PricePlan.PricePlanName ='Guest'
             );

最佳答案

我记得,这些更新语句更像是:

UPDATE Bill
SET Price = PricePlan.Price
FROM (SELECT Price FROM PricePlan
      WHERE PricePlanName = 'Guest')

但我不完全清楚你想完成什么。您能否提供一个示例,说明在before和after场景中,表将包含哪些内容?
编辑
基于http://dbaspot.com/forums/ms-access/138825-select-inside-update.html,我猜这样的方法可能会奏效:
UPDATE Bill,PricePlan
SET Bill.Price = PricePlan.Price
WHERE PricePlan.PricePlanName = 'Guest'
AND ... (put something here to limit which bills you want to update)

08-06 14:05