You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access更新查询中Is Null条件失效问题求助

MS Access更新查询无结果问题分析与解决

核心问题原因

你的查询逻辑存在矛盾:

  • INNER JOIN 要求 T_4006_Infusion.ProductID = T_Temp_MaxProductID.MaxProductID,但Null值和任何值的相等比较都返回未知(包括和另一个Null)。所以当ProductID为Null时,INNER JOIN无法匹配到任何T_Temp_MaxProductID的记录,最终没有符合条件的行被更新。

解决思路与修改方案

方案1:用子查询直接获取最大值(推荐)

放弃不必要的JOIN,直接从临时表中取出最大值,更新所有ProductID为空的记录:

UPDATE T_4006_Infusion
SET ProductID = (SELECT MAX(MaxProductID) FROM T_Temp_MaxProductID) + 1
WHERE ProductID Is Null;
  • 若T_Temp_MaxProductID只有一条记录,也可以去掉MAX(),直接用(SELECT MaxProductID FROM T_Temp_MaxProductID)。

方案2:调整JOIN类型(仅作逻辑演示)

如果一定要用JOIN,需改为LEFT JOIN并设置无条件关联,确保空ProductID的记录能匹配到临时表的最大值:

UPDATE T_4006_Infusion
LEFT JOIN T_Temp_MaxProductID ON True
SET T_4006_Infusion.ProductID = [T_Temp_MaxProductID].[MaxProductID] + 1
WHERE T_4006_Infusion.ProductID Is Null;

额外排查点

  • 确认T_Temp_MaxProductID表中存在有效记录,若表为空,子查询会返回Null,更新后的ProductID仍为Null。
  • 检查ProductID的数字类型(如是否为Integer),确保MaxProductID+1不会超出类型的取值范围导致溢出。

内容的提问来源于stack exchange,提问作者ElphiusMostafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:32:07