在Access中更新查询,为具有相同ID的所有记录设置Status值相等

时间:2015-09-25 08:41:10

标签: sql ms-access

我很难在Access中编写更新查询,如果Status包含值,则会为具有相同ID的所有记录设置Status值。

Table1现在就像这样:

ID       Status
1
1          OK
2
2          OK
3
3

通缉的结果是:

ID               Status
1                  OK
1                  OK  
2                  OK    
2                  OK
3
3

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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 替换为两个地方的表名。