我很努力在Access中編寫更新查詢,如果狀態包含值,則會爲具有相同ID的所有記錄設置狀態值相等。在Access中更新查詢,爲具有相同ID的所有記錄設置狀態值相等
的表1 loooks現在這個樣子:
ID Status
1
1 OK
2
2 OK
3
3
求購結果是:
ID Status
1 OK
1 OK
2 OK
2 OK
3
3
我很努力在Access中編寫更新查詢,如果狀態包含值,則會爲具有相同ID的所有記錄設置狀態值相等。在Access中更新查詢,爲具有相同ID的所有記錄設置狀態值相等
的表1 loooks現在這個樣子:
ID Status
1
1 OK
2
2 OK
3
3
求購結果是:
ID Status
1 OK
1 OK
2 OK
2 OK
3
3
訪問UPDATE
查詢可以挑剔的。一個在子查詢中使用GROUP BY
將被視爲「不可更新」。您可以使用DMax()域聚合函數避免投訴......
UPDATE tblOlaOkland AS y
SET y.Status = DMax('[Status]','[YourTable]','[ID]=' & y.ID)
WHERE
y.Status Is Null
AND DMax('[Status]','[YourTable]','[ID]=' & y.ID) Is Not Null;
更換YourTable用在兩個地方你的表的名稱。
一種方法是相關子查詢。然而,這可能是更容易使用join
表示:
update table1 join
(select id, max(status) as maxstatus
from table1 as t
group by id
) as t2
on table1.id = t.id
set table1.status = t2.maxstatus
where t2.maxstatus is not null;
嗨戈登,謝謝你的回覆。我是Access和SQL的新手,所以當我嘗試運行您發佈的代碼時,您知道爲什麼我在更新代碼中收到語法錯誤嗎? – OlaOkland
沒有圖片...添加表格定義,樣本數據和想要的結果。 – jarlh
對不起,但這只是太少的信息來描述問題。編輯你的問題。添加包含示例數據的多行,並添加通緝結果。 – jarlh