【问题标题】:UPDATE query with inner joined query带有内部连接查询的 UPDATE 查询
【发布时间】:2016-06-11 12:38:48
【问题描述】:

我已经保存了 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]);

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

【问题讨论】:

    标签: sql ms-access inner-join


    【解决方案1】:

    也许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 & "'")
    

    【讨论】:

      【解决方案2】:

      我使用以下方法让它工作:

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

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

      【讨论】:

      • 操作必须使用可更新的查询:-(
      【解决方案3】:

      您的查询不正确,试试这个。

        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 
      

      【讨论】:

      • 我不确定您的查询不包含第一个(和第一个“a”)附近的输入错误
      【解决方案4】:

      我不确定我是否完全理解您的要求。 如果您询问使用内部联接执行更新时使用什么语法。

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

      【讨论】:

        猜你喜欢
        • 2018-09-15
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 1970-01-01
        • 1970-01-01
        • 2011-12-05
        相关资源
        最近更新 更多