在多列访问更新查询中惟一标准

问题描述:

我有这样一个表(Access版本2013)在多列访问更新查询中惟一标准

Block SAP SAG BAP BAG 
600400 1 3   
600401   1 3 
600402    
600403 1 3 2 4 
600404   1 3 
600405   3 4 
600406 1 4   
600407 1 2 1 3 
600408 4 5   
600409 1 1 3 1 
600410 1 5 1 3 

我想更新这样的表格下面,基本上我想为null(SAP & SAG = NULL)如果(SAP = 1和SAG = 3),这个我可以很容易实现,问题是我想为(BAP & BAG = NULL)如果(BAP = 1 AND BAG = 3) SAG,我尝试了各种方式,但最终以不寻常的结果

Block SAP SAG BAP BAG 
600400    
600401    
600402    
600403   2 4 
600404    
600405   3 4 
600406 1 4   
600407 1 2  
600408 4 5   
600409 1 1 3 1 
600410 1 5  

它是pos sible使用单个查询来实现(或)我需要使用两个不同的更新查询?有什么建议么 ?

您需要两个查询,因为它们会影响不同(但重叠)的行集。

它也简单易读。为什么你不想使用两个查询?

UPDATE foo 
SET SAP = NULL, SAG = NULL 
WHERE SAP = 1 AND SAG = 3; 

UPDATE foo 
SET BAP = NULL, BAG = NULL 
WHERE BAP = 1 AND BAG = 3; 
+0

因为这只是我在这里发布的一个例子,实际上我需要添加30多列来更新,所以我不想创建更多的更新表。 – Macs

+1

您可以在VBA循环中创建并运行每个UPDATE SQL。但那将是一个新问题。 – Andre

+0

我想要一个完全一样的使用宏或类似的循环! – Macs

如果您不需要修改第一个表格,那么使用访问函数更简单,不要选择您不想要的项目。

SELECT IIF(SAP <> “1” 和凹陷<> “3”;汁液, “”)AS SAP,IIF(SAP <> “1” 和凹陷<> “3”;凹陷, “”) AS SAG,Iif(Bap <>“1”AND Bag <>“3”; Bap,“”)AS BAP,Iif(Bap <>“1”AND Bag <>“3”; Bag,“”)AS BAG FROM Table;