我正在尝试使用最终中的值更新原始表。我是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]
我不确定您的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
表中都是唯一键并且它们正确相关时,此操作才能正常工作。
试试这个
UPDATE o
SET o.[Assest Description] = f.[Assest Description]
FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]
访问非常挑剔。如果完全限定要更新的字段的名称,则可能会失败。如果您不完全限定联接表和字段,则可能会返回"不支持联接"。 我说可能,因为它可能略有不同的版本会做一些不同的事情。 至少这是我的经验。
所以我的答案是从创建→查询设计开始。选择两个表并使选择正常工作。 然后将其修改为更新查询,并对要从中更新的表中的字段的列进行更新。然后切换到 SQL 视图并将其用作模型以在 VBA 中构建查询。
我有一个语法正确的 SQL 语句,但在我这样做然后完全匹配限定和非限定字段名称之前,它声称不支持 join。