2015-09-25 44 views
1

我很努力在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 
+0

沒有圖片...添加表格定義,樣本數據和想要的結果。 – jarlh

+1

對不起,但這只是太少的信息來描述問題。編輯你的問題。添加包含示例數據的多行,並添加通緝結果。 – jarlh

回答

0

訪問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用在兩個地方你的表的名稱。

0

一種方法是相關子查詢。然而,這可能是更容易使用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; 
+0

嗨戈登,謝謝你的回覆。我是Access和SQL的新手,所以當我嘗試運行您發佈的代碼時,您知道爲什麼我在更新代碼中收到語法錯誤嗎? – OlaOkland

相關問題