如何将查询结果与现有表联接以执行UPDATE?

时间:2018-09-06 12:13:50

标签: sql ms-access

我的查询看起来像这样,我想这是因为使用了ConcatRelated(),它连接了相关字段:

SELECT C.ID, ConcatRelated(["GameNames", "BaselineQuery", "CC.ID = " & [ID]) AS Games FROM BaselineQuery AS C GROUP BY C.ID

结果集如下所示:

ID    GameNames
 1    "A, "B", "C", D"
 2    "A", "B"
 3    "D", "E", "A", "B"

我要更新的游戏表

ID  GameNames
 1     
 2
 3

其中GameNames当前为空白,我想使用查询的ID和表的ID填充GameNames,因此Games表中的1应该为“ A”,“ B”,“ C”,“ D” “。

我的UPDATE查询说:

UPDATE GAMES INNER JOIN CreatedQuery ON Games.ID = CreatedQuery.ID SET Games.GameNames = CreatedQuery.GameNames

不幸的是,Access告诉我该UPDATE查询不是可更新的查询,考虑到ID是Games表的PK,并且值显然相同,这对我现在来说意义不大。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您不能在更新查询中加入不可更新的查询。使用子查询也不起作用。整个记录集(所有基础查询和表)都需要可更新。

但是,您可以使用DLookUp来解决此问题:

UPDATE GAMES
SET Games.GameNames = DLookUp("GameNames", "CreatedQuery", "ID =" & ID)