我想使用MS Access SQL更新具有ID主鍵的表tblBillingPlan
。我想用我通過查詢在組中計算出的值更新字段db_FeeType
。MS Access UPDATE查詢失敗,因爲查詢不可更新
FROM子句引用qryGIT,它返回兩列ID和FeeType。每個ID只返回一行。
UPDATE tblBillingPlan
SET tblBillingPlan.db_FeeType =
(SELECT MAX(GI.FeeType)
FROM qryGIT AS GI
WHERE GI.id=tblBillingPlan.ID
GROUP BY GI.ID
);
當我運行時出現錯誤「查詢不可更新」。我怎樣才能解決這個問題?
我最初嘗試:
UPDATE tblBillingPlan
SET tblBillingPlan.db_FeeType =
(SELECT GI.FeeType
FROM qryGIT AS GI
WHERE GI.id=tblBillingPlan.ID
);
這裏是
SELECT Billing_plan.id
, Billing_plan.name
, IIf(Max([Fee]) Is Null Or Max([Fee])=Min([Fee])
,Max([Fee])
,"BP has BP Fee rows with different fee types") AS FeeType
FROM Billing_plan
LEFT JOIN Billing_plan_fee
ON Billing_plan.id = Billing_plan_fee.billing_plan_id
GROUP BY Billing_plan.id, Billing_plan.name;
注意Billing_plan_fee
將匹配給定Billing_plan.id多達四個行定義。
我也嘗試使用TOP修改只返回這沒有什麼區別
UPDATE tblBillingPlanCPLAD
SET tblBillingPlanCPLAD.FeeType =
(SELECT TOP 1 GI.FeeType -- TOP 1 made no differentce
FROM GITAS GI
WHERE GI.id=tblBillingPlan.ID
);
我對這個使用DAO記錄做一個行,但我敢肯定,我以前寫的SQL可以在Oracle和SQL服務器中執行此操作。我生鏽了。
「Billing_plan」和「Billing_plan_fee」表或視圖? –