INSERT ... ON DUPLICATE KEY UPDATE with WHERE?(INSERT ... ON DUPLICATE KEY UPDATE with WHERE?)
问题描述
我正在执行 INSERT ... ON DUPLICATE KEY UPDATE
但我需要更新部分是有条件的,只有在某些额外条件发生变化时才进行更新.
I'm doing a INSERT ... ON DUPLICATE KEY UPDATE
but I need the update part to be conditional, only doing the update if some extra condition has changed.
但是,此UPDATE
不允许使用WHERE
.有什么解决方法吗?
However, WHERE
is not allowed on this UPDATE
. Is there any workaround for this?
我不能做 INSERT/UPDATE/SELECT 的组合,因为这需要在复制上工作.
I can't do combinations of INSERT/UPDATE/SELECT since this needs to work over a replication.
推荐答案
我建议你使用 IF() 来做到这一点.
I suggest you to use IF() to do that.
参考:conditional-duplicate-key-updates-with-mysql
INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
这篇关于INSERT ... ON DUPLICATE KEY UPDATE with WHERE?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:INSERT ... ON DUPLICATE KEY UPDATE with WHERE?


基础教程推荐
- 带更新的 sqlite CTE 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01