使用WHERE子句插入DUPLICATE KEY UPDATE

时间:2013-09-04 16:26:22

标签: mysql sql sql-update

我在MySQL中创建了一条记录,如果它已经存在,我不想创建它。但是我想更新一个名为invite_state的字段,意思是无论关系是什么,它现在都应该回到状态INVITED。问题是此规则有一个例外 - 如果状态为UNSUBSCRIBED,那么它不应该返回INVITED

因此,这将是MySQL中的on duplicate key update,但这不支持where子句。有解决方法吗?

1 个答案:

答案 0 :(得分:0)

解决方法是使用IF语句。

insert into (...) values (...)
on duplicate key update
set invite_state = IF(where_condition, new_value, invite_state)