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

时间:2012-10-04 22:57:29

标签: 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.[Assest No] = Final.[Asset No]

3 个答案:

答案 0 :(得分: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都是唯一键时,这才能正常工作。

答案 1 :(得分:2)

试试这个

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

答案 2 :(得分:0)

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