MS访问:如何实现对重复密钥更新?(MS Access: how to achieve ON DUP

2019-09-23 09:09发布

试图避免单独的查询来检查关键存及其然后插入或相应地更新。 从周围的Googling似乎Access不支持SQL服务器的合并无论是。

谢谢

Answer 1:

实际上,访问不支持“Upserting”,因为它有时也被称为。 我发现在一个叫微软接入解决方案书该解决方案-技巧,诀窍和秘密从Microsoft Access的MVP由阿尔文Meyer和道格拉斯J.斯蒂尔写的。

下面是从Contacts1表中获取新的数据,并将其应用到contacts2的表的查询:

UPDATE Contacts2 LEFT JOIN Contacts1
ON Contacts2.ContactID = Contacts1.ContactID
SET Contacts2.ContactID = [Contacts1].[ContactID],
Contacts2.FirstName = [Contacts1].[FirstName],
Contacts2.LastName = [Contacts1].[LastName],
Contacts2.MobilePhone = [Contacts1].[MobilePhone]

当然,我想你可以使用表别名和地方的条件。 而且我不知道需要支架如图所示,但我把它们放在那里,因为他们显示(即使表名和字段名不包含空格或符号),书中的例子。

下面是直接从书上迈出的又一注:

这应该是显而易见的,如果你对每个表中定义的唯一索引这仅适用。 通常,这将是表的主键,但它实际上并不是必需的,它是只要候选键两个表中存在。 (这允许您使用自动编号作为主键,而不必担心号码是不同的。)没关系索引是否包含单个字段,或者是一个复合键索引,只要是在同一这两个表。



Answer 2:

一个简单的更新查询可以做的伎俩。
创建一个简单的SELECT查询。
然后在你的查询生成器的设计视图中单击更新
看看在网格中的变化。
现在把与您要更新你的领域(S)式(S)或值(S)。
运行查询



文章来源: MS Access: how to achieve ON DUPLICATE KEY UPDATE?