SQL 更新同一张表

Posted

技术标签:

【中文标题】SQL 更新同一张表【英文标题】:SQL UPDate same table 【发布时间】:2013-12-02 17:05:48 【问题描述】:

我知道这之前已经发布过,但我不确定我是否理解逻辑让 aloan 尝试将其纳入 JET 友好语法。

这就是我想要做的事情

我有一堆与文档相关的记录,我计划用 GUID 重命名文档,但是一些记录指向同一个文档,这就是问题所在。

表格 ID、LegacyFullPathNme、GUID、isDuplicate

我的代码循环并为每条记录分配一个 GUID。然后我想用相同的 GUID 更新重复文档记录

下面是我的哈希,但不起作用“操作必须使用可更新的查询

UPDATE [IO Documents] a
set a.codedFileName = (SELECT B.codedFileName
                       FROM  [IO Documents] b
                       WHERE b.LegacyFullPathName  = a.LegacyFullPathName)

目前使用宏去抛出 RBAR

【问题讨论】:

Operation must use an updatable query. (Error 3073) Microsoft Access的可能重复 【参考方案1】:

我有点困惑为什么你会这样做,因为现在你的全局唯一 id 列不是唯一的,因为多行会有它。

我认为更好的方法是简单地从旧表创建一个新表,每个文件路径对应一行。

SELECT LegacyFullPathNme
INTO newtable
FROM oldtable
GROUP BY LegacyFullPathNme;

然后将 guid 添加到新表中。 (请注意,我没有测试那个 sql sn-p 所以这可能不是正确的语法,但我认为它明白了这一点)。

【讨论】:

谢谢你,这是一个非常好的解决方案,读完后我不知道我是怎么把它弄得这么复杂的。 没问题。有时一个问题只需要一双新的眼睛。祝你好运。【参考方案2】:

我相信您正在寻找这样的东西:

UPDATE [IO Documents] SET
codedFileName = DMin("codedFileName","IO Documents","LegacyFullPathName='" & LegacyFullPathName & "'")

【讨论】:

以上是关于SQL 更新同一张表的主要内容,如果未能解决你的问题,请参考以下文章

难以在同一张表上创建更新总计查询

更新同一张表的整列字段

无法在同一张表上查询和更新的问题解决方法

使用SQL的更新语句时,一次可以对几个表进行更新?

mysql 3张表关联批量更新

触发器处理表更新