访问更新查询多列中的唯一标准

时间:2017-06-21 06:45:30

标签: ms-access ms-access-2010 ms-access-2013

我有一个这样的表(Access Version 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

我想像下面这样更新表格,基本上我想空(SAP& SAG = NULL)if(SAP = 1 AND SAG = 3),这个我可以轻松实现,问题是我想要(BAP& BAG = NULL)如果(BAP = 1 AND BAG = 3)同时不影响SAP和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     

是否可以通过单个查询(或)实现我需要使用两个不同的更新查询?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

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

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;

答案 1 :(得分:0)

如果您不需要修改第一个表格,那么使用访问功能更难以选择您不想要的项目。

SELECT Iif(Sap<>" 1" AND Sag<>" 3&#34 ;; Sap,"")AS SAP,Iif(Sap< >" 1"和Sag<>" 3&#34 ;; Sag,"")AS SAG,Iif(Bap<>" 1&# 34; AND Bag<>" 3&#34 ;; Bap,"")AS BAP,Iif(Bap" 1" AND Bag<>& #34; 3&#34 ;; Bag,"")AS BAG FROM Table;