sql - 根据 MS Access 中每一列的不同条件更新多列
问题描述
我正在尝试加入两个表Tbl_LIN和CDETOPDE。这些表有一个公共键Element ID。在加入的过程中,我们还需要从Tbl_LIN更新两列;Glossary_ID和DRD_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 但出现语法错误。非常感谢帮助/建议。
解决方案
您可以将表达式放在子句中,而不是使用UNION
and子句:WHERE
Iif
SET
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)
推荐阅读
- ocaml - Base 弃用了一些有用的函数
- c++ - 我收到运行时错误提示“运行时错误:引用绑定到空指针”
- themes - 如何为 CodeBlocks 更改或添加深色主题?
- three.js - 三个JS在知道原点和距离的平面上找到一个点
- python - urllib.error.HTTPError: HTTP Error 403: Forbidden in my web scraping
- php - 如何使用 Algolia Instantsearch 获得随机结果
- esp8266 - 波特率更改后 ESP8266 不工作
- node.js - 如何在 reactjs 中更新我的评论数组?
- python - 堆叠和重塑 Numpy 数组
- powershell - Powershell 让 IE 自动化 | 填写付款表格问题