使用SQL从另一个访问表更新MSAccess表

使用SQL从另一个访问表更新MSAccess表,sql,ms-access,ms-access-2007,Sql,Ms Access,Ms Access 2007,我试图用Final中的值更新表Original。我是SQL的新手,但我在这方面已经做了两个小时,试图更改各种示例以满足我的需要。我正在使用Access 2007 UPDATE Original o SET o.[Assest Description] = ( SELECT f.[Assest Description] FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]) WHERE o.[Asse

我试图用Final中的值更新表Original。我是SQL的新手,但我在这方面已经做了两个小时,试图更改各种示例以满足我的需要。我正在使用Access 2007

UPDATE 
  Original o
SET 
  o.[Assest Description] = (
    SELECT f.[Assest Description] FROM Original o, Final f 
    WHERE o.[Assest No] = f.[Assest No])
WHERE o.[Assest No] = Final.[Asset No]
试试这个

UPDATE o 
SET o.[Assest Description] =  f.[Assest Description]
FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]
我不确定select语句只返回一行。如果要使用select语句对表执行更新以进行赋值,则必须确保该语句只返回一行

此外,您可以考虑下一个解决方案:

update 
   Original as o
   inner join Final as f on o.[Assest No] = f.[Assest No]
set
   o.[Assest Description] = f.[Assest Description]

请注意,只有当[Assest no]在原始表和最终表中都是唯一的键,并且它们之间有适当的关联时,此操作才能正常工作。

Access非常挑剔。如果完全限定要更新的字段名称,则可能会失败。如果您没有完全限定联接表和字段,它可能会返回不支持联接。我说may是因为可能稍微不同的版本会做一些不同的事情。至少这是我的经验

所以我的答案是从创建->查询设计开始。 选择这两个表并使选择正确工作。然后将其修改为更新查询,并从要更新的表中对要更新字段的列进行更新。 然后切换到SQL视图,并将其用作在VBA中构建查询的模型


我有一个语法正确的SQL语句,但直到我这样做,然后完全匹配符合条件的与不符合条件的字段名,它声称不支持JOIN。

对于这个蹩脚的标题,我感到抱歉。所以说不能发布,因为标题存在:-那么这是一个重复的问题吗?当然cmsjr的答案很简单。我不完全确定我的答案是否能与访问引擎一起工作,所以你的答案可能是更好的。这完全有效,并节省了我的后腿。我试过cmsjr的答案,我觉得很简单,但事实并非如此。谢谢你们两位。我不擅长SQL,但join语句使我无法使用。@user1721535我很高兴知道这对您有所帮助。还有一点非常个人的看法:MS Access SQL是一种非常定制的SQL方言,我称之为Bill's SQL。。。这是一个学习基础知识的好地方,但它有一些技巧可能会让人混淆。基于此,我在Access 2013中进行了以下查询,结果非常好:更新组件内部连接分析,对组件进行分析。组件=分析。组件集组件。业务单元=分析。[测试区域],组件。影响=分析。影响,Components.InScope=开关分析。[测试区域]=NA,False,True,True,Components.InUse=开关分析。[测试区域]=未使用,False,True,True请注意->此查询语法不适用于MS Access 2007它应抛出错误3075,查询表达式中缺少语法错误运算符。。。。有效的Access SQL更新不包括FROM关键字,您必须在设置之前完全定义数据源。这也不适用于Access 2013,与@HansUp指出的错误相同