使用SQL从另一个Access表更新MSAccess表

问题描述 投票:4回答:3

我正在尝试使用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]
sql ms-access ms-access-2007
3个回答
8
投票

我不确定您的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]Original表中,Final都是唯一键,并且它们之间有正确的关联,才可以正常工作。


2
投票

尝试一下

UPDATE o 
SET o.[Assest Description] =  f.[Assest Description]
FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]

0
投票

我不知道这应该是答案还是评论,但由于它是独立存在的,因此我将其编写为答案。访问非常挑剔。如果您完全限定要更新的字段的名称,则它可能会失败。如果您不完全限定联接表和字段,则可能返回“不支持联接”。我说这可能是因为它可能略有不同的版本会有所不同。至少那是我的经验。所以我的答案是从Create-> Query Design开始。选择两个表,并使选择正确工作。然后将其修改为更新查询,并对要更新的表中要更新字段的列进行更新。然后切换到SQL视图,并将其用作在VBA中构建查询的模型。我有一个语法正确的SQL语句,但是直到执行此操作,然后将限定字段名称与非限定字段名称完全匹配时,它才声明不支持JOIN。

© www.soinside.com 2019 - 2024. All rights reserved.