在多列访问更新查询中惟一标准
问题描述:
我有这样一个表(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;
答
如果您不需要修改第一个表格,那么使用访问函数更简单,不要选择您不想要的项目。
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;
因为这只是我在这里发布的一个例子,实际上我需要添加30多列来更新,所以我不想创建更多的更新表。 – Macs
您可以在VBA循环中创建并运行每个UPDATE SQL。但那将是一个新问题。 – Andre
我想要一个完全一样的使用宏或类似的循环! – Macs