使用 SQL 从另一个 Access 表更新 MS Access 表
Posted
技术标签:
【中文标题】使用 SQL 从另一个 Access 表更新 MS Access 表【英文标题】:Update MSAccess table from another Access table using SQL 【发布时间】:2012-10-04 22:57:29 【问题描述】:我正在尝试使用 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]
【问题讨论】:
对不起这个蹩脚的标题。所以说不能发布,因为标题存在:-) 那是重复的问题吗? 【参考方案1】:我不确定您的 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
表中的唯一键并且它们正确相关时,这才能正常工作。
【讨论】:
当然cmsjr的回答比较简单 我不完全确定我的答案是否适用于 Access 引擎,因此您的答案可能会更好。 这完全奏效并拯救了我的后腿。我已经尝试过 cmsjr 答案,我认为这很容易,但事实并非如此。谢谢你俩。我不擅长 SQL,但连接语句让我感到很困惑。 @user1721535 很高兴知道这对您有所帮助。还有一点(非常个人)的意见:MS Access SQL 是一种非常定制的 SQL 方言(我称之为“Bill's SQL”)......这是学习基础知识的好地方,但它有一些可能会造成混淆的技巧 基于此,我在 Access 2013 中进行了以下查询,效果很好:UPDATE Components INNER JOIN Analysis ON Components.Component = Analysis.Component SETComponents.BusinessUnit = Analysis.[Test Area], Components.Impact = Analysis.Impact, Components.InScope = SWITCH (Analysis.[Test Area] = "NA", False, True, True), Components.InUse = SWITCH (Analysis.[Test Area] = "Not Used", False, True, True)
【参考方案2】:
试试这个
UPDATE o
SET o.[Assest Description] = f.[Assest Description]
FROM Original o, Final f WHERE o.[Assest No] = f.[Assest No]
【讨论】:
作为注释 -> 此查询语法不适用于 MS Access 2007 它应该抛出错误#3075,“查询表达式中的语法错误(缺少运算符)......”。有效的 Access SQLUPDATE
不包含 FROM
关键字,您必须在 SET
之前完全定义数据源。
这也不适用于 Access 2013,与@HansUp 指出的错误相同【参考方案3】:
访问非常挑剔。如果您完全限定要更新的字段的名称,它可能会失败。如果您不完全限定连接表和字段,它可能会返回“不支持连接”。我说可能是因为稍有不同的版本可能会做不同的事情。至少这是我的经验。
所以我的答案是从 Create->Query Design 开始。 选择两个表并让选择正常工作。然后将其修改为更新查询,并从要更新的表中更新要更新字段的列。 然后切换到 SQL 视图并将其用作在 VBA 中构建查询的模型。
我有一个语法正确的 SQL 语句,但直到我这样做,然后完全匹配限定字段名称和非限定字段名称,它声称不支持 JOIN。
【讨论】:
以上是关于使用 SQL 从另一个 Access 表更新 MS Access 表的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBA (MS Access) 中的 bigint 字段更新 SQL 表