首页 > 解决方案 > 使用基于另一个表的特定值更新 MS Access 表

问题描述

我正在尝试根据第二个表中缺少匹配项来更新表中的是/否列,如下所示:

UPDATE Table1 
INNER JOIN Table2 
ON (Table1.Date_last_action = Table2.MaxOfDate_last_action) 
AND (Table1.Office = Table2.Office) 
AND (Table1.Response_ID = Table2.Response_ID) 
SET Table1.IsDeprectated = 1
WHERE (([Table2].[MaxOfDate_last_action] Is Null));

或者

UPDATE Table1 
INNER JOIN Table2 
ON (Table1.Date_last_action <> Table2.MaxOfDate_last_action) 
AND (Table1.Office = Table2.Office) 
AND (Table1.Response_ID = Table2.Response_ID) 
SET Table1.IsDeprectated = 1;

两者都不起作用。

我的目标是,当执行更新查询时,对于 Table1 中所有在 Table2 中没有匹配行的行,IsDeprecated 列设置为 True

这可能吗?

[编辑蒂姆的评论]

数据样本

标签: ms-access

解决方案


您可以将存在逻辑与子查询一起使用:

UPDATE Table1 t1
SET t1.IsDeprectated = 1
WHERE NOT EXISTS (SELECT 1 FROM Table2 t2
                  WHERE t1.Date_last_action <> t2.MaxOfDate_last_action AND
                        t1.Office = t2.Office AND
                        t1.Response_ID = t2.Response_ID);

推荐阅读