Sql 在一个表中按另一行更新一行

Sql 在一个表中按另一行更新一行,sql,ms-access-2016,Sql,Ms Access 2016,我正在使用Access 2016,我有一个缺少一些数据的表。我需要根据同一表的其他行更新丢失的数据。该表有两个Identifier和两个Criteria字段,空字段表示缺少的数据。幸运的是,数据只在Criteria2列中丢失,当Criteria1不为空时: Identifyer1 Identifyer2 Criteria1 Criteria2 10 a A3 10 a

我正在使用Access 2016,我有一个缺少一些数据的表。我需要根据同一表的其他行更新丢失的数据。该表有两个Identifier和两个Criteria字段,空字段表示缺少的数据。幸运的是,数据只在Criteria2列中丢失,当Criteria1不为空时:

Identifyer1  Identifyer2  Criteria1  Criteria2  
  10             a                     A3        
  10             a           X        NULL     
  20             b                     B3     
  30             c                     C3
  40             d                     D3
  40             d           Y        NULL
为了填充缺失的数据,复制相同标识符的Criteria2值就足够了。所以结果应该是这样的:

Identifyer1  Identifyer2  Criteria1  Criteria2  
  10             a                     A3        
  10             a           X         A3     
  20             b                     B3     
  30             c                     C3
  40             d                     D3
  40             d           Y         D3
我尝试过类似的方法,但无法完成代码:

更新表1设置标准2=如何在此处复制值?如果Criteria1不为NULL,且identifier1=identifier1和identifier2=identifier2,请尝试以下操作

Update table1 
Set Criteria2 = (
  select max(criteria2) from table1 t1    
  where t1.identifier1 = table1.identifier1 
     and t1.identifier2 = table1.identifier2 
     and t1.criteria2 is not null
) 
Where Criteria1 is not NULL 

由于更新查询必须在MS-Access中,请考虑对应于相关子查询的域聚合DMAX:

更新表1 t1 SET Criteria2=DMaxCriteria2,表1, Criteria1不为NULL且Identifier1='&t1.Identifier1&' 和identifier2='&t1.identifier2&'
这看起来不错,只是发生了一个错误,Access命令需要可更新。