MYSQL,关于重复更新和 IF

MYSQL, ON DUPLICATE UPDATE and IF

我的查询实际上是:

INSERT INTO `table` (f1,f2,status) VALUES 
(1,5,'on'),  (3,2,'on'), (15,20,'on') 
ON DUPLICATE KEY UPDATE status='off';

但是如何添加 IF status="on" 然后进行更新?我试过了

INSERT INTO `table` (f1,f2,status) VALUES 
(1,5,'on'),  (3,2,'pending'), (15,20,'on') 
ON DUPLICATE KEY UPDATE status='off' IF(status='pending');

但是好像不行,文档里这部分我没看懂。

有什么帮助吗?

谢谢

这是一个很好的文档和示例,演示了相同的 MySQL IF Function

MySQLIF 函数的语法如下: IF(表达式, if_true_expr, if_false_expr)

如果 expr 的计算结果为 TRUE,则 IF 函数 returns if_true_expr,否则 returns if_false_expr.

现在,回到你的问题,假设你想用 'on''off''pending' 或基于状态的列 status 的用户输入更新状态值为 on ,查询应如下所示:

INSERT INTO `table` (f1,f2,status) VALUES 
    (1,5,'on'),  (3,2,'pending'), (15,20,'on') 
    ON DUPLICATE KEY UPDATE status = IF(VALUES(status) = 'on', VALUES(status), 'off');