4

我正在尝试使用 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]
4

3 回答 3

9

我不确定您的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]中的唯一键并且它们正确相关时,这才能正常工作。OriginalFinal

于 2012-10-04T23:07:12.787 回答
2

试试这个

UPDATE o 
SET o.[Assest Description] =  f.[Assest Description]
FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]
于 2012-10-04T23:02:07.827 回答
0

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

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

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

于 2019-10-20T16:38:03.720 回答