MYSQL,ON DUPLICATE UPDATE和IF

时间:2015-06-26 13:45:15

标签: mysql if-statement insert duplicates

我的查询实际上是:

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

但是如何在"上添加IF状态="然后做这个更新?我试过了

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');

但似乎没有用,我在文档中对此部分并不了解。

请帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

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

MySQL IF函数的语法如下:   IF(expr,if_true_expr,if_false_expr)

如果expr求值为TRUE,则IF函数返回if_true_expr,否则返回if_false_expr

现在,回答您的问题,假设您要根据状态值更新状态'on''off''pending'或用户输入列status在,查询应如下所示:

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');