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