INSERT ...使用WHERE在重复密钥更新上? [英] INSERT ... ON DUPLICATE KEY UPDATE with WHERE?
本文介绍了INSERT ...使用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 ...使用WHERE在重复密钥更新上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文