gpt4 book ai didi

MySQL ON DUPLICATE KEY UPDATE 和 CONCAT

转载 作者:行者123 更新时间:2023-11-29 05:05:45 44 4
gpt4 key购买 nike

我有一个查询(代码PRIMARY KEY):

INSERT INTO table (Code, ... events)
VALUES
(1, ... CONCAT(events, 'BAR')),
(2, ... CONCAT(events, 'BAR')),
...
ON DUPLICATE KEY
UPDATE ... events = VALUES(events)

我的意图是,如果给定键已经有一行,则将插入的 events 值连接到现有值。

在我的查询中,假设 events 的现有值是 FOO,新的 events 值总是 'BAR' 而不是 'FOOBAR'

实现我想要的目标的正确方法是什么?

最佳答案

要将新值连接到旧值,请将 CONCAT 调用移动到 UPDATE 中:

INSERT INTO table (Code, ... events)
VALUES
(1, ... 'BAR'), -- insert plain values
(2, ... 'BAR'),
...
ON DUPLICATE KEY
UPDATE ... events = CONCAT(IFNULL(events, ''), VALUES(events)) -- concat if key same

有关使用 IFNULL() 的注意事项。如果您的 events 列允许 NULL 值,如果现有值为 NULL,则更新后的结果将再次为 NULL > 已经。为防止这种情况,我们在附加额外数据之前使用 IFNULL(events, '')初始化值。

关于MySQL ON DUPLICATE KEY UPDATE 和 CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48621701/

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