我的查询实际上是:
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 .
MySQL IF 函数的语法如下: IF(expr, if_true_expr, if_false_expr)
如果 expr
的计算结果为 TRUE
,则 IF 函数返回 if_true_expr
,否则返回 if_false_expr
。
现在,回到你的问题,假设你想用 'on'
或 'off'
或 'pending'
更新状态或基于状态值 on 的列 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');
关于MYSQL,重复更新和 IF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074851/