MYSQL,重复更新和 IF

标签 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 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/

相关文章:

php - 删除然后插入偶尔会因重复键而失败

php - 如何使用 php 和 mysql 从多列中检索和输出图像?

mysql - 从名称首字母相同的表中选择

php - 为每个选项值命名

python - 循环数据框列python

jquery - 遍历 DOM 并将值插入到 <input/> 中

php - MySQL - 使用 UDPATE&SELECT 锁定行 - PHP 中的 PDO

c - for循环中的if语句 - 无限循环

javascript - 使用 if 语句检查元素是否显示 : block jquery

c++ - 关于 vector 的困惑