程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了更新 MySQL 插入字段......在重复密钥更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决更新 MySQL 插入字段......在重复密钥更新?

开发过程中遇到更新 MySQL 插入字段......在重复密钥更新的问题如何解决?下面主要结合日常开发的经验,给出你关于更新 MySQL 插入字段......在重复密钥更新的解决方法建议,希望对你解决更新 MySQL 插入字段......在重复密钥更新有所启发或帮助;

我有一个有点长的 MysqL ETL 语句,我将 32 列数据插入到一个表中。此 ETL 语句也使用 UNION 作为派生表。

我的代码与此类似,在MysqL参考手册中定义:

INSERT INTO t1 (a,b,... "32 columns total")
SELECT * FROM
  (SELECT a,... FROM t2
        left JOIN t3 on t2.ID = t3.ID
   UNION
   SELECT a,... FROM t2
        RIGHT JOIN t3 on t2.ID = t3.ID
  ) AS dt
**ON DUPliCATE KEY UPDATE b = b + c**;

问题:使用“On Duplicate Key Update”时,我的目标表中添加了重复的行。我怀疑我没有正确编写最后一行代码。

我的问题:我是否需要将表中的 ALL 32 列添加到这个 'On Duplicate Key Update' 语句中?还是列数据可能会发生变化?

提前致谢,我发现 MysqL 参考手册的这一部分令人困惑,而且它们的示例比我的实际场景要简单得多。我已经搜索过,但找不到与我的情况类似的答案或示例。

解决方法

谢谢@Barmar,我很欣赏对话!
事实证明,因为我试图避免这个错误:https://bugs.mysql.com/bug.php?id=58637 我欺骗自己创建了一个无法按预期工作的主键。 ;) 我创建了一个复合主索引,它由一个(自动增量编号,r_id,t_id)组成。由于自动增量编号不是我插入的一部分,它允许行重复。 我更改了我的表索引,因此主索引仍然是自动递增编号,并且有一个新的唯一索引,其中包括(r_id 和 t_id)。这似乎现在起作用了。

我仍然对我的原始问题的一部分感到好奇:在创建“重复密钥更新”语句时...我真的需要包含每个可能更改的字段吗?换句话说......该语句是否评估该语句中的字段的变化?

再次感谢@Barmar!

这是我发布到 stackoverflow 的第一个问题,所以希望我遵循了协议!

大佬总结

以上是大佬教程为你收集整理的更新 MySQL 插入字段......在重复密钥更新全部内容,希望文章能够帮你解决更新 MySQL 插入字段......在重复密钥更新所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: