使用内部联接查询的UPDATE查询

时间:2016-02-28 13:36:44

标签: sql ms-access inner-join

我已经保存了SELECT查询。我需要创建更新查询以使用保存的选择查询中的值更新表字段。

我收到错误“操作必须使用可更新的查询”。 问题是保存的选择查询结果不包含主键。

UPDATE [table] INNER JOIN
       [saved_select_query]
       ON [table].id_field = [saved_select_query].[my_field]
    SET [table].[target_field] = [saved_select_query]![source_field]);

我也尝试使用select子查询而不是内连接,但是同样的错误。

4 个答案:

答案 0 :(得分:2)

也许DLookUp()可以解决问题:

UPDATE [table] SET
    [target_field] = DLookUp("source_field", "saved_select_query", "my_field=" & id_field)

...或者,如果连接的字段是文本......

UPDATE [table] SET
    [target_field] = DLookUp("source_field", "saved_select_query", "my_field='" & id_field & "'")

答案 1 :(得分:0)

我不确定我完全明白你在问什么。 如果您在询问使用内部联接执行更新时要使用的语法。

UPDATE      tableAlias
SET         Column = Value
FROM        table1 as tableAlias
INNER JOIN  table2 as table2Alias on tableAlias.key = table2Alias.key

答案 2 :(得分:0)

您的查询不正确,请尝试此操作。

  UPDATE [table]

  SET [table].[target_field] = [table2]. 
  [source_field])

   from (select *from  
   [table] INNER JOIN
   [saved_select_query] a
   ON [table].id_field = 
  a.[my_field] )    
  table2 

答案 3 :(得分:0)

我使用以下方法开始工作:

UPDATE [table]
SET [table].[target_Field] = (SELECT [source_field] FROM [Saved_Select_Query]
WHERE [table].[id_field] = [Saved_Select_Query].[my_field])

您不能直接在UPDATE语句上使用JOIN,因此您需要在子查询中连接表。