2015-09-25 35 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

相关问题