gpt4 book ai didi

mysql - SQL 重复键更新 - 在非主键上?

转载 作者:行者123 更新时间:2023-11-29 01:54:33 24 4
gpt4 key购买 nike

编辑:谁能解释一下我将如何使用MERGE 来解决这个问题?语法真的让我感到困惑:https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

我有一个名为 dbo.Customers_DefaultValues 的表,基本上如果客户忘记输入值,我会在数据库中将该值设置为特定于该客户的默认值。

The database table

表中的键是 Id。每个客户的 FieldId 都不是唯一的,因此例如 CustomerId = 1CustomerId = 2 都可以有一个 FieldId = 11。我想要做的是,如果我为已有值的客户向 FieldId 添加新值 - 我想更新该值。

我已阅读并尝试使用 ON DUPLICATE KEY UPDATE 但它一直给我错误。

enter image description here

有什么办法可以解决这个问题吗?

提前致谢。

最佳答案

对于使用 MERGE 的 SQL Server:

MERGE dbo.Customers_DefaultValues AS target
USING (SELECT 4,11, 'Test2') AS source (CustomerId, FieldId, Value)
ON (target.CustomerId = source.CustomerId AND target.FieldId = source.FieldId)
WHEN MATCHED THEN
UPDATE SET value = source.value
WHEN NOT MATCHED THEN
INSERT (CustomerId, FieldId, Value)
VALUES source.CustomerId, Source.FieldId, Source.Calue
END;

在实践中通常最好尝试通过更新来插入和处理 key 冲突,since MERGE is actually not atomic .

关于mysql - SQL 重复键更新 - 在非主键上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32823869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com