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