首页 > 解决方案 > 根据 MS Access 中每一列的不同条件更新多列

问题描述

我正在尝试加入两个表Tbl_LINCDETOPDE。这些表有一个公共键Element ID。在加入的过程中,我们还需要从Tbl_LIN更新两列;Glossary_IDDRD_ID。需要注意的是,这些列也属于CDETOPDE。如果CDETOPDE.Glossary_ID为空,我们的目标是设置Tbl_LIN.Glossary_ID为空。同样对于其他列DRD_ID。这是Ms Access的尝试。

UPDATE tblLineage

INNER JOIN 

CDEtoPDE

ON tblLineage.Element_ID = CDEtoPDE.Element_ID

SET tblLineage.Glossary_ID = NULL

WHERE (CDEtoPDE.Glossary_ID  IS  NULL AND tblLineage.Glossary_ID IS NOT NULL)

UNION (

SET tblLineage.DRD_ID = NULL

WHERE 
(CDEtoPDE.DRD_ID  IS  NULL AND tblLineage.DRD_ID IS NOT NULL))

单个查询中不允许使用多个 SET 语句,因此我们考虑使用 UNION 但出现语法错误。非常感谢帮助/建议。

标签: sqlms-access

解决方案


您可以将表达式放在子句中,而不是使用UNIONand子句:WHEREIifSET

UPDATE tblLineage
INNER JOIN 
CDEtoPDE
ON tblLineage.Element_ID = CDEtoPDE.Element_ID
SET tblLineage.Glossary_ID = iif(CDEtoPDE.Glossary_ID  IS  NULL AND tblLineage.Glossary_ID IS NOT NULL, NULL, tblLineage.Glossary_ID),
    tblLineage.DRD_ID = Iif(CDEtoPDE.DRD_ID  IS  NULL AND tblLineage.DRD_ID IS NOT NULL, NULL, tblLineage.DRD_ID)

推荐阅读