2

我有一个 MS Access 表,其中有一个字段,我想根据键是否存在于单独的查询中来更新。我试图研究并发现类似但不相同的问题(例如Access 2003 - 基于选择查询结果运行更新查询),但我不知道如何将它们转换为我的情况。

基本上我做了一个查询,返回所有需要更新的条目的主键。

所以

查询:“temp”为我要更改的所有记录返回 KeywordID。它是 24K 条记录

然后我有我要更新的表

表:“关键字”有一个字段“优先级”,我想为 KeywordID 在临时查询中的每条记录设置为“是”。大约有 900K 行。

我无法弄清楚我应该做什么:这是我尝试过的所有错误方法:

UPDATE keywords SET keywords.Priority = Yes  JOIN temp ON keywords.KeywordID = temp.KeywordID ; ' SYNTAX error

UPDATE keywords SET keywords.Priority = Yes INNER JOIN temp ON keywords.KeywordID = temp.KeywordID ; ' SYNTAX error

UPDATE keywords INNER JOIN temp ON keywords.KeywordID = temp.KeywordID SET keywords.Priority = Yes; ' Must use an updatable query

UPDATE keywords SET keywords.Priority = Yes WHERE EXISTS (SELECT temp.KeywordID from TEMP); ' tries to update 900K records

任何帮助都会很棒。

4

2 回答 2

0

目前无权对此进行测试,但这应该值得一试

更新关键字 SET 关键字。优先级 = 是 JOIN temp on keywords.KeywordID = temp.KeywordID WHERE keywords.KeywordID = temp.KeywordID;

更新关键字 INNER JOIN 临时 ON 关键字.ID = temp.ID SET 关键字.Priority = True;

于 2013-06-17T04:32:12.547 回答
0

此示例可能不需要您先创建临时表:

UPDATE keywords
SET Priority = -1
WHERE keywordID IN (SELECT keywordID FROM temp)

如果 Priority 是 Yes/No 字段,则 -1 与 True 具有相同的效果

于 2013-06-17T08:41:09.650 回答