mysql - INSERT ... 使用 WHERE 进行重复的 key 更新?

标签 mysql replication

我正在执行 INSERT ... ON DUPLICATE KEY UPDATE 但我需要更新部分是有条件的,只有在某些额外条件发生变化时才进行更新。

但是,WHERE 在此 UPDATE 上是不允许的。有什么解决方法吗?

我不能进行 INSERT/UPDATE/SELECT 的组合,因为这需要在复制过程中起作用。

最佳答案

我建议你使用 IF() 来做到这一点。

引用: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);

关于mysql - INSERT ... 使用 WHERE 进行重复的 key 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469457/

相关文章:

c# - Windows 窗体应用程序 - MySQL - 无法从 'string' 转换

mysql - 如何构建一个包含表之间匹配计数的矩阵?

cordova - 通过 REST-API 进行 Couchbase 移动复制

synchronization - 使用 BitTorrent 在多个站点之间进行文件复制/同步

sql - 我可以使用 Developer 版本的 SQL Server 复制组件吗?

mysql 代理 r/w 复制和临时表

php - 将字符串转换为数组并从该数组中获取值

sql - 执行查询时如何获取这些信息? (查询时间、锁定时间、发送的行和检查的行)

mysql - Rails 关联有两个外键?

Solr indexing - 主/从复制,如何处理巨大的索引和高流量?