我正在做一个INSERT ... ON DUPLICATE KEY UPDATE
,但我需要更新的部分是有条件的,只做更新,如果一些额外的条件已经改变.
但是,UPDATE
上不允许使用WHERE
.有什么解决办法吗?
我不能同时执行插入/更新/ Select 操作,因为这需要在复制过程中进行.
我正在做一个INSERT ... ON DUPLICATE KEY UPDATE
,但我需要更新的部分是有条件的,只做更新,如果一些额外的条件已经改变.
但是,UPDATE
上不允许使用WHERE
.有什么解决办法吗?
我不能同时执行插入/更新/ 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);